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