[英]Angular isolated scope in directive refers to the parent scope
我知道指令中隔離范圍的角度有一些變化。 但是我無法弄清楚為什么我在指令內的元素上得到了錯誤的作用域:
angular.module('app', [])
.run(function ($rootScope) {
$rootScope.val1 = '11';
$rootScope.val2 = '22';
})
.directive('dir1', function () {
return {
restrict: 'E',
scope: {},
template: '<a onclick="angular.element(this).scope().test()">template</a>',
link: function (scope, element, attrs, ctrl, transclude) {
scope.test = function(){console.log('test');}
}
};
});
這也是jsFiddle 。
在onclick
事件上,范圍是指$rootScope
而不是指令的范圍。 因此,它找不到未定義的test
方法。
我缺少的是為什么我從指令內的元素中得到錯誤的作用域。 我可以做angular.element($("a")[0]).scope().test()
,結果將是相同的。
該代碼在以前的版本中有效。 不知道我在做什么錯。
將模板重寫為...
'<a ng-click="test()">template</a>'
...,它應該可以工作。 Onlick是一種瀏覽器功能,可以執行全局狀態,並且與angular及其范圍模型無關。 因此,請遵循ng-click
類的角度指令,並且use可以使用您在范圍內定義的方法。
這是一個執行函數並具有對元素的引用的jsFiddle 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.