学习有角度的知识,所以有时阅读有关角度的文章时不清楚。在这里,我坚持了解该关键字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可以很明显地看出您是哪个控制器
当多个控制器应用于一个模板时,访问模板
元件
希望能帮助到你。