我創建了2個指令用於顯示框(confirmedBox
指令)和一個用於顯示框(確認框)的指令。在confirmingBox
的內部鏈接函數中,我創建了confirmedBox
,編譯時父範圍是confirmingBox
。但是,當點擊「顯示框」按鈕時,它會記錄isDisplay undefined
,這意味着我無法對從父指令到子指令的變量isDisplay進行雙向綁定。我不知道爲什麼它不起作用?編譯後的子指令會附加到父級,但無法訪問父級範圍?
代碼住: http://plnkr.co/edit/SHH1JEtGJxibyem25kfd?p=preview
編寫JavaScript代碼:
angular.module('AppA2_Task',[])
.directive('confirmedClick', function ($compile, $rootScope) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
scope.displayBox = true;
element.on('click', function() {
element.attr('disabled', 'disabled');
var boxScope = $rootScope.$new(true, scope);
var boxElem = $compile('<div data-confirming-box data-confirm="confirm" data-is-displayed="displayBox"></div>')(boxScope);
element.append(boxElem);
scope.$apply(function() {
scope.displayBox = true;
});
});
}
}
})
.directive('confirmingBox', function() {
return {
//require: '^confirmedClick',
restrict: 'A',
template: "<div ng-if='isDisplayed'>I am a box</div>",
scope: {
isDisplayed: '='
},
link : function(scope){
console.log('isDisplayed',scope.isDisplayed);
}
}
})
.controller('MainController', function() {
});
代碼的html
<body data-ng-controller="MainController">
<button data-confirmed-click>Show box</button>
</body>
這似乎是我必須在編譯時和編譯時boxElem都會有它自己的範圍,而不是使用boxScope的範圍。謝謝。 – o0omycomputero0o 2014-11-09 03:45:26