AngularJS:这是什么'这个'当AngularJS控制器是一个类的成员函数?

时间:2015-09-15 01:39:20

标签: javascript angularjs

我使用类的成员函数作为AngularJS控制器: 注意:下面的代码是从一些TypeScript代码编译的。

function Clazz(x) {

   this.Member = x;

   this.Func= function ($scope) {          
      $scope.message = '' + this.Member;   // this.Member is undefined
   }
} 


app.controller('TaxCtrl',  new Clazz('Hello').Func  );

当我切换到Func时会调用TaxCtrl,但this似乎不是Clazz的实例,因为this.Member总是未定义。

2 个答案:

答案 0 :(得分:1)

priestFunc实例的成员时,这将起作用。当角度构造函数作为对象时,正在创建一个新对象,其中Clazz引用this的实例。

这是一个jsbin示例:

http://jsbin.com/rocopiwila/edit?js,console

如果您尝试向控制器共享属性,请使用服务和注射剂。

答案 1 :(得分:0)

试试这个:

function Clazz(x) {

   this.Member = x;
   self = this;

   this.Func= function ($scope) {          
      $scope.message = '' + self.Member;   
   }
} 


app.controller('TaxCtrl',  new Clazz('Hello').Func  );