HTML代码:如何从控制器获取由内部指令创建的作用域?
<body ng-controller="MainCtrl">
<h1>Hello {{name}}</h1>
<div id="aaa" myd1>
In a directive
</div>
<button ng-click="showDirectiveScope()">Show Directive Scope</button>
</body>
角码:
var app = angular.module('angularjs-starter', []);
app.controller('MainCtrl', function($scope,$element) {
$scope.name = 'World';
$scope.showDirectiveScope = function() {
var aaa = $element.find("#aaa");
console.log(aaa);
console.log(angular.element(aaa).scope());
}
});
app.directive('myd1', function(){
return {
scope: true
}
});
会有在页面中显示指令范围按钮。当我点击它时,我想要角度来找到id=aaa
的DOM,然后获取并记录由指令myd1
创建的范围。
但它会打印undefined
,哪里出错?
现场演示:http://plnkr.co/edit/ravJoVH2oGLDD0VUsO82?p=preview
'$ element.find(“#aaa”)'can find正确的DOM,见日志:'[ready:function,toString:function,eq:function,push:function,sort:function ...]' – Freewind 2013-03-09 02:27:28
@Freewind,这是错误的元素。当你添加jQuery时,日志会显示'[div#aaa.ng-scope,prevObject:b.fn.b.init [1],context:body.ng-scope,selector:“#aaa”,jquery:“ 1.9.1“,构造函数:函数...]'。工作plunker:http://plnkr.co/edit/bUsxo2UBWuiNkXBf8fsI?p=preview – 2013-03-09 02:32:14
你是对的!我也怀疑没有使用jQuery的解决方案? – Freewind 2013-03-09 02:58:06