2015-09-16 36 views
2

如何在下面的情况下解决变量作用域的问题。Javascript和角度变量作用域问题

Myapp.controller('MyController', ['$scope', function ($scope) { 
 
    var formvalues = {}; 
 
    
 
    $scope.somebuttonclick = function(){ 
 
    mycont.somefunctionB(); 
 
    }; 
 
    
 
    var mycont = { 
 
     init: function(){ 
 
     formvalues.init = "some value init"; 
 
     this.somefunctionA(); 
 
     }, 
 
     somefunctionA: function(){ 
 
      formvalues.a= "some value a"; 
 
     alert(formvalues.init); //comes undefined when called from mycont.init 
 
     }, 
 
     somefuntionB: function(){ 
 
      formvalues.b = "some valuee b"; 
 
      alert(formvalues.init); // comes "some value init" when called from buttonclick 
 
     } 
 
    }; 
 

 
}]);

通过点击按钮调用,变量正确定义,而是mycont方法中调用的时候,它说不确定。如何解决这个

+0

类似this.someFunctionA()...我想你需要通过调用这个引用你的内部函数。否则,您需要申请,绑定或致电外部。 – Vontei

+0

@Vontei如何申请绑定? –

回答

0

不知道你在寻找什么,但检查:

Myapp.controller('MyController', ['$scope','$log', function ($scope, $log) { 

    var formvalues = {};/*this is empty at first*/ 

    var mycont = { 
     init: function(){ 
      formvalues.init = "some value init"; 
     }, 
     somefunctionA: function(){ 
      formvalues.a= "some value a"; 
      /*mycont.init();*/ /*you can call it here, if not in somebuttonclick*/ 
      $log.log(formvalues.init); 
      $log.log(formvalues.a); 
     }, 
     somefunctionB: function(){ 
      formvalues.b = "some valuee b"; 
      /* mycont.init(); */ /*you can call it here, if not in somebuttonclick*/ 
      $log.log(formvalues.init); 
      $log.log(formvalues.b); 
     } 
    }; 

    $scope.somebuttonclick = function(){ 
     mycont.init();/*you need to first call this function before you can use the value*/ 
     mycont.somefunctionA(); 
     mycont.somefunctionB(); 
    }; 
}]); 
0

你要么需要绑定this的功能,或者只是访问的功能对象属性是这样的:

mycont.someFunctionA()