У меня есть две директивы. Внешние директивы должны получить некоторую информацию от службы, а затем использовать этот объект для внутренней директивы. Но я не могу понять, как это сделать правильно. Вот некоторые примеры кода, в котором я полагаю, у меня есть некоторые цветные карандаши, и мы должны получить информацию карандаш на основе ID, чтобы выяснить цвет карандаша:Использовать объект из директивы внутри дочерней директивы
<div pencil-directive pencil-id="7"></div>
angular.module('app', [])
.controller('sampleController', function($scope){
$scope.color = "red";
})
.directive('colorDirective', function(){
return {
restrict: "E",
template: "<span ng-class='color'>{{color}}</span>",
scope: {
color: '='
}
}
})
.directive('pencilDirective', ["$timeout", function($timeout){
return{
restrict: "A",
template: "<div>Pencil {{pencilId}} is " +
"<color-directive color='pencil-color'> </div>",
scope: {
pencilId: "@",
pencilColor: "=?"
},
controller: function($scope){
//simulate getting the pencil color from a service
$timeout(function(){
$scope.pencilColor = "blue";
}, 10)
}
}
}])
Я хотел бы ожидать что выглядеть следующим образом:
Pencil 7 color is blue.
Но вместо этого она заканчивается просто глядя, как это:
Pencil 7 color is 0
Я предполагаю, потому что pencilColor
не инициализируется к тому моменту, когда colorDirective
видит его, и он не обновляется позже, но я не знаю «угловой способ» этой работы.
Here's a plunk. Обратите внимание, что я нахожусь на Angular 1.2, так как мы все еще поддерживаем IE 8 (пока).
Вздох ... так намного проще, чем я делал это, чтобы быть. : D – Pharylon