Следите за изменениями в компоненте Angular 1.5.3?

0

У меня есть контроллер, который извлекает данные для заполнения большого раскрывающегося списка:

MySrvc.getData()
    .then(function (response) {
        $scope.someData = response.data;
    });

У меня также есть компонент, который создается и определяется как таковой..

<my-component foo='someData'></my-component>

angular.module('mod').component('myComponent', {
    bindings: {
        foo: '<'
    },
    controller: function() {

    }
});

ngOptions диктует, что у вас также должен быть установлен ngModel. Я хотел бы, чтобы первый элемент массива был выбранным объектом. this.selectedElement = this.foo[0]. Проблема в том, что я не могу написать эту строку кода до тех пор, пока не узнаю, что привязка обновлена.

Я не могу использовать scope.$watch в компоненте и this.$onChanges тоже не работает. Есть идеи?

  • 1
    Для использования $onChanges вас должен быть как минимум угловой 1.5.3. Но тогда это должно работать с this.$onChanges = function(){...}
  • 0
    @SimonSchüpbach SimonSchüpbach О, хм, наша минимизированная версия отличается от нашей не минимизированной версии. Собираюсь исправить это, а затем обновить.
Показать ещё 1 комментарий
Теги:
angularjs-directive

3 ответа

1
Лучший ответ

У вас должен быть хотя бы угловой 1.5.3 чтобы использовать $onChanges. Но тогда вы можете так использовать

controller: function() {
     this.$onChanges = function(){
         // your stuff
     }
}
1

Если вы хотите использовать наблюдателя на this.foo вы можете использовать функцию $scope.$watch. Он может принимать функцию в качестве своего первого аргумента, поэтому вы можете наблюдать определенную переменную.

пытаться:

$scope.$watch(function () {
  return this.foo;
},true);
1

вы можете решить эту проблему с помощью ng-if

<my-component ng-if="someData" foo='someData'></my-component>

если вы добавите ng-if в свой элемент, рендеринг директивы после того, как данные придут

Ещё вопросы

Сообщество Overcoder
Наверх
Меню