学习有角度的知识,所以有时阅读有关角度的文章时不清楚。在这里,我坚持了解该关键字Controller和controllerAs在指令中的用途或重要性。

从此处获取的代码http://blog.thoughtram.io/angularjs/2015/01/02/exploring-angular-1.3-bindToController.html

app.controller('SomeController', function () {
  this.foo = 'bar';
});

app.directive('someDirective', function () {
  return {
    restrict: 'A',
    controller: 'SomeController',
    controllerAs: 'ctrl',
    template: '{{ctrl.foo}}'
  };
});


我想知道理解指令中这两个关键字的重要性,它们是controller: 'SomeController', and controllerAs: 'ctrl',

请告诉我,如果我们不使用这两个关键字controller: 'SomeController', and controllerAs: 'ctrl',,那会发生什么或更糟的事情?

请帮助我了解此关键字的用法或重要性controller: 'SomeController', and controllerAs: 'ctrl', in directive.谢谢

最佳答案

看看这个plunkr code

这是我简单的指令代码:

angular.module('app', [])

.directive('someDirective', function () {
  return {
    scope: {},
    controller: function ($scope) {
      this.name = 'Pascal';
      $scope.color = 'blue';
    },
    controllerAs: 'ctrl',
    template: '<div>name: {{ctrl.name}} and Color: {{color}}</div>'
  };
});


和HTML

<body ng-app="app">
   <some-directive />
</body>


因此,如您所见,如果需要访问控制器中针对this关键字定义的某些变量,则必须使用controllerAs。但是,如果是针对$scope对象定义的,则可以使用其名称进行访问。

例如,您可以通过使用针对color定义的{{color}}来获取变量$scope,但是您必须使用针对{{ctrl.name}}定义的“名称”的this

正如this answer所说,我认为并没有太大的区别,


有些人不喜欢$ scope语法(不要问我为什么)。他们说
他们可以只使用this


另外,从他们的own website中,您可以了解有关此设计选择背后的动机的信息,


使用controller可以很明显地看出您是哪个控制器
当多个控制器应用于一个模板时,访问模板
元件


希望能帮助到你。

10-06 08:11