У меня есть контроллер, который извлекает данные для заполнения большого раскрывающегося списка:
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.5.3
чтобы использовать $onChanges
. Но тогда вы можете так использовать
controller: function() {
this.$onChanges = function(){
// your stuff
}
}
Если вы хотите использовать наблюдателя на this.foo
вы можете использовать функцию $scope.$watch
. Он может принимать функцию в качестве своего первого аргумента, поэтому вы можете наблюдать определенную переменную.
пытаться:
$scope.$watch(function () {
return this.foo;
},true);
вы можете решить эту проблему с помощью ng-if
<my-component ng-if="someData" foo='someData'></my-component>
если вы добавите ng-if
в свой элемент, рендеринг директивы после того, как данные придут
$onChanges
вас должен быть как минимум угловой 1.5.3. Но тогда это должно работать сthis.$onChanges = function(){...}