在代码学院第4.6节使用angular进行整形测试我注意到以下场景,其中指令控制器名称似乎映射到HTML文件中指定的任何控制器。
以下是var attrs = new RouteValueDictionary(attrsInDict);
中的指令:
app.js
以下是app.directive('productTabs', function() {
return {
restrict:'E',
templateUrl:'product-tabs.html',
controller: function() {
// move controller inside of the directive
this.tab = 1;
this.isSet = function(checkTab) {
return this.tab === checkTab;
};
this.setTab = function(setTab) {
this.tab = setTab;
};
},
controllerAs: 'tab'// you need the alias
};
});
:
index.html
然而,以下<product-tabs ng-controller"ProductTab as tab"></product-tabs>
工作正常,令我感到困惑。
index.html
更令人困惑的是<product-tabs ng-controller"productTab as tab"></product-tabs>
中控制器的完全随机名称,如下所示:
index.html
为什么我几乎可以将HTML命名为HTML中的任何内容,无论它在JavaScript文件中的<product-tabs ng-controller"foo as tab"></product-tabs>
中如何声明?这里有什么魔力,是否有一个我应该阅读的主题,以了解为什么所有这些场景都有效?
我可以看到app.directive
是否适用于所有案例和非复数版本,但为什么它会识别html中的productTabs
并以某种方式实现映射到foo as tab
控制器?