我知道在指令內部,角度與隔離範圍有一些變化。指令中的角度隔離範圍指的是父範圍
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()
,結果是一樣的。
此代碼在以前的版本中工作。不知道我做錯了什麼。
你可以看看這個http://stackoverflow.com/questions/19943935/angularjs-scope-difference-1-0-x-vs-1-2-x –