我知道在指令内部,角度与隔离范围有一些变化。指令中的角度隔离范围指的是父范围
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 –