簡體   English   中英

指令中的角度隔離范圍是指父范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM