我创建了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