3
在查看有關指令中的隔離範圍的AngularJS(及相關)文檔和其他stackoverflow問題之後,我仍然有點困惑。爲什麼我不能在父範圍和指令隔離範圍之間進行雙向綁定,其中父範圍屬性是對象而不是屬性?我應該使用scope.$parent
以外的所需房產嗎?這似乎是錯誤的。在此先感謝您的幫助。如何從父範圍繼承複雜的屬性到我的指令的隔離範圍
相關小提琴是here。
HTML:
<div ng-app="myApp">
<div ng-controller="myCtrl">
<div my-directive>{{test.name}}</div>
</div>
</div>
的JavaScript:
var myApp = angular.module('myApp', []);
myApp.controller('myCtrl', function ($scope) {
$scope.test = {name:"name", value:"value"};
});
myApp.directive("myDirective", function() {
return {
replace: true,
restrict: 'A',
scope: {test: '='},
template: '<div class="parent"><div>This is the parent Div.</div><div>Value={{test}}</div></div>',
link: function (scope, element, attrs) {
console.log("scope.test=["+scope.test +"]");
console.log("scope.$parent.test=["+scope.$parent.test.name+"]");
}
};
});
感謝馬克!鑑於我試圖綁定的屬性是一個對象,使用HTML屬性(只能是字符串)引用它並不直觀。另外,由於我只是簡單地將HTML用作我希望我的指令所在的位置的持有者,所以使用它來定義我希望在範圍之間同步的屬性似乎並不合理。無論如何,我想我現在明白了。我很感謝你的回答。雖然AngularJS文檔有一些優點,但在解釋開發人員制定代碼決策所需的中級概念時,可以看到有待改進的餘地。 – KSev 2013-03-21 16:21:20
是的,我同意HTML屬性的值是(範圍)對象的名稱是相當奇怪的。 – 2013-03-21 16:25:19
對於那些可能會發現這個問題很有幫助的人來說,這裏是更新的,工作小提琴與馬克的建議實施:http://jsfiddle.net/ksevksev/PWdYZ/ – KSev 2013-03-21 16:30:41