在多个嵌套的angularjs指令中使用object

时间:2014-03-07 01:55:47

标签: javascript angularjs angularjs-directive angularjs-scope

我有一个人物对象列表。我有一个指令,用于显示关于此人的一些只读数据,并在其中嵌套一个指令,该指令充当人员操作的工具栏(删除,朋友等)。当您单击第一个指令时,第二个嵌套指令显示为编辑此人。

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) {

    }
}]);

0 个答案:

没有答案