2013-06-05 2 views
2

Для следующих angularjs директив:Как Inject переменной в директиве ребенка

app = angular.module('ngApp'); 

app.value('objects', [ 
    {id: 1, name: 'Jane Doe', active: true}, 
    {id: 2, name: 'Test Biz', active: false}, 
    {id: 3, name: 'Another Business', active: false} 
]); 

app.directive('myDirective', function (objects) { 
    return { 
     template: '<ul></ul>', 
     replace: true, 
     compile: function(element, attrs) { 
      for(var i=0;i<objects.length;i++) { 
      element.append('<div other-directive object={{object}}></div>'); 
     } 
     } 
    }; 
}) 
.directive('otherDirecctive', function() { 
    return { 
    template: '<li>{{object.name}}', 
    replace: true, 
    scope: { object: '=' } 
}); 

И этот бит HTML:

<div my-directive></div> 

Как пройти каждый объект в суб-директивы? Есть ли лучший общий способ структурирования этого кода?

ответ

1

Я хотел бы предложить, используя только один директиву и использовать ng-repeat в шаблоне:

app.directive('myDirective', function (objects) { 
    return { 
     link: function(scope,element,attrs){ 
      scope.objects = objects;  
     }, 
     template: '<ul><li ng-repeat="o in objects">{{o.name}}</li></ul>' 
    }; 
}); 

Но если вы все же хотите использовать вторую директиву, вы можете использовать как есть, просто изменить шаблон первым :

'<ul><li ng-repeat="o in objects" other-directive object="o"></li></ul>' 

Демо:Here is a fiddle

+0

Это была функция ссылка, что я был неправильно петь. Спасибо! –

Смежные вопросы