随着下一个稳定的 AngularJS 的发布,我正在将我的应用程序从版本1.0.8迁移到1.2。
在 AngularJS 1.0.8中,可以为诸如follow
. 然后该指令将使用它自己的test()
函数而不是控制器的test()
函数。
HTML
<my-dialog property="something">
<button ng-click="test()">Load Test</button>
Check out the test: "{{ testMessage }}"
</my-dialog>
Javascript
.controller('Ctrl', function(scope) {
scope.test = function () {
scope.testMessage = 'CTRL Test loaded! Whooops.';
}
})
.directive('myDialog', function() {
return {
restrict: 'E',
scope: {
property: '='
},
link: function(scope) {
scope.test = function () {
scope.testMessage = 'Isolated Test loaded. Yes!';
}
}
};
在 AngularJS 1.2中,这种行为不再起作用。现在单击按钮会触发控制器的test()
功能。
请参阅此 jsFiddle 比较:
究竟有什么变化,我怎样才能重现旧的行为?
笔记
我发现我可以将指令模板放在一个额外的 HTML 文件中,或者将其编译为字符串以使其正常工作(jsFiddle),但在我的情况下似乎太多了,因为模板是固定的并将 HTML 拆分为几个部分HTML 文件很麻烦。
编辑
当没有其他要共享的属性时,@elclanr 的答案可以正常工作。我更新了 jsFiddle以传递一些任意属性。我现在应该如何进行?