我有一个人物对象列表。我有一个指令,用于显示关于此人的一些只读数据,并在其中嵌套一个指令,该指令充当人员操作的工具栏(删除,朋友等)。当您单击第一个指令时,第二个嵌套指令显示为编辑此人。
在simple example in plnker中这很好用,但在实际生活中,这对于没有更新或无限更新的字段非常脆弱(编辑器有相当多的ngRepeats使事情变得更奇怪)等等。
我有3个独立的范围并将相同的对象传递给所有三个,这似乎很尴尬但另一方面,我需要在所有3个指令中有很多该对象的属性/方法,所以传递整个宾语。有没有更好的方法呢?
app.directive('personCard', [function () {
var directive = {
link: link,
restrict: 'A',
templateUrl: 'personcard.tpl.html',
scope: {
person: '='
}
};
return directive;
function link(scope, element, attrs) {
scope.isOpen = false;
scope.person.close = function(){
scope.isOpen = false;
}
scope.person.edit = function (){
scope.isOpen = true;
}
}
}]);
app.directive('personToolbar', [
function () {
var directive = {
link: link,
restrict: 'A',
templateUrl: 'personcardtoolbar.tpl.html',
scope: {
person: '=',
close: '&',
edit: '&'
}
};
return directive;
function link(scope, element, attrs) {
}
}]);
app.directive('personEditor', [
function () {
var directive = {
link: link,
restrict: 'A',
templateUrl: 'personeditor.tpl.html',
scope: {
person: '='
}
};
return directive;
function link(scope, element, attrs) {
}
}]);