角度范围用法

Angular Scope Usage

本文关键字:用法 范围      更新时间:2023-09-26

我是AngularJS的初学者。

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

专家总是插入:

this.scope = $scope;

在每个控制器的第一行中。

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

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

这个

  • 当调用控制器构造函数时,这就是控制器
  • 当调用在$scope对象上定义的函数时,这是"当
    函数被调用"。这可能是(也可能不是!)函数定义的$scope。**因此,在函数内部,This和$scope可能不相同

$scope

  • 每个控制器都有一个关联的$scope对象
  • 控制器(构造函数)函数负责在其关联的$scope上设置模型属性和函数/行为
  • 只有在$scope对象上定义的方法(以及父作用域对象,如果原型继承正在发挥作用)才能从HTML/视图访问。例如,从ng点击、过滤器等

Mark Rajcok提供,摘自AngularJS控制器中的"this"和$scope如何工作

不带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);