角度范围用法

时间:2014-09-01 12:55:21

标签: javascript angularjs angularjs-directive angularjs-scope

我是AngularJS的初学者。

我正在处理一些专家的代码。 我想自定义指令并学习一些东西。

专家总是插入​​:

this.scope = $scope;

在每个控制器的第一行。

如果你以后总是只使用$scope,那么这句话有什么意义呢。

1 个答案:

答案 0 :(得分:1)

this指针指的是$scope而不是控制器。

  • 调用控制器构造函数时,这是控制器。
  • 当调用$ scope对象上定义的函数时,这是“当有效时范围有效” 该函数被称为“。这可能(或可能不是!)是函数定义的$ scope。**因此,在函数内部,这和$ scope可能不一样。

<强> $范围

  • 每个控制器都有一个关联的$ scope对象。
  • 控制器(构造函数)函数负责在其关联的$ scope上设置模型属性和函数/行为。
  • 只能在HTML /视图中访问此$ scope对象上定义的方法(以及父范围对象,如果是原型继承)。例如,来自ng-click,过滤器等

Mark Rajcok提供的 How does 'this' and $scope work in AngularJS controllers

没有 this

app.controller('MyCtrl', function($scope){
  $scope.doStuff = function(){
    //Really long function body
  };
});

this

var MyCtrl = function($scope){
  var _this = this;

  $scope.doStuff = function(){
    _this.doStuff();
  };
};

MyCtrl.prototype.doStuff = function(){
  //Really long function body
};

MyCtrl.$inject = ['$scope'];

app.controller('MyCtrl', MyCtrl);