2015-12-15 4 views
1

Я использую Angular 1.4.2, и у меня есть директива, которую я создал, которую я использую на одной из моих веб-страниц. Страница, которая получает служила, который содержит директиву как элемент на странице делает запрос API через HTTP, чтобы получить ресурс, я хочу передать этот ресурс для сферы действия директивы, как так ...Передача данных, полученных из запроса api в область директивы

<custom-element obj="myController.obj"> 
</custom-element> 

Моей директивы код будет выглядеть примерно так ...

angularModule 
.directive("customElement", function(){ 
    return { 
     restrict: "E", 
     controller: "dirController", 
     scope: { 
      obj: "=" 
     } 
    } 
}); 

Эта директива будет получить объект в объеме, OBJ.

объект не определен, если я пытаюсь получить доступ к нему в dirController, я считаю, что это происходит потому, что страницы (и, таким образом, элемент, который создается из директивы) визуализируются и созданы до запроса API закончил. Мне интересно, какой лучший способ передать объект, полученный из запроса API, и передать его в изолированную область customeElement.

+1

Одним из быстрых способов является то, что вы можете иметь 'наблюдателя' внутри вашей директивы на' obj' ИЛИ вы могли бы использовать директиву 'ng-if' для вашего элемента, чтобы отобразить его, как только у вас есть такие данные, как' ng -if = "myController.obj" 'на директивном элементе –

+0

где вы видите, что его не определено? он может быть не определен во время загрузки, но если вы используете {{obj.prop}} в шаблоне директив, он должен показать значение, которое загружаются данные. – jonasnas

+0

@PankajParkar. Метод ng-if работал, спасибо! – northsideknight

ответ

2

// EDITED

Я также encoured такого рода проблемы, вы можете использовать что-то вроде этого в контроллере вашей директивы ждать, что ваш объект «OBJ» был инстанциирован (с помощью asynchronus вызова, например):

$scope.$watch('obj', function(newValue) { 
    if(newValue != undefined){ 
    // do what you want her 
    } 
}); 
+0

Входит ли это в контроллер директивы? – northsideknight

+0

Видел редактирование, спасибо! – northsideknight

+0

добро пожаловать. я забываю $ в $ scope – AlainIb