Я имею угловую 1.5 компоненты внутри HTML-странице (не родительский компонент) и компонент не будет вызывать $ onChanges при изменении: здесь являются содержащим HTML: , . .
<my-comp standards-data="standardsData"></my-comp>
. . .
здесь компонент:
angular.module("bla").component('myComp', {
templateUrl: '/my-comp.tpl.html',
controller: myController,
bindings: {
standardsData: '<'
}
});
function myController() {
var self = this;
self.$onInit = function() {
self.standardsData = {};
}
self.$onChanges = function (changes) {
self.standardsData.something = changes.standardsData.currentValue.something;
};
}
Когда я получать новые данные в Ctrl в HTML, который содержит мой компонент, он не будет влиять на компонент. Я получаю только в $ onInit компонента и после изменения $ scope.standardsData (в содержащем html/ctrl), $ OnChanges моего компонента не будет вызываться.
Надеюсь, я описал проблему правильно, Спасибо!
Спасибо за ваш ответ! На самом деле я не думаю, что это потому, что standardData - это объект. В приложении есть 2 случая: 1. Мы нажимаем на какую-либо ссылку и маршрутизируем на этот экран. При этом в событии onChanges нет активности. (только onInit) ... 2. В этот момент, когда я обновляю страницу (например, F5), событие onChanges начинает действовать. любая идея? Спасибо! – moshi
@moshi - Две вещи вызывают '$ onChanges': 1) Когда компонент сначала инициализируется, 2) когда происходят изменения в привязке родителем. Обновление F5 заставляет вас видеть активность изменений от инициализации. Вы никогда не увидите его снова, потому что вы привязаны к ссылке на объект, которая не изменяется. Я удалю свой (правильный) ответ, если хотите. – sh0ber
Благодарим вас за ответ. Я согласен с вами в том, что $ onChanges возникает при инициализации. Я не вижу, что это всегда происходит при изменении данных. Это как когда я обновляю страницу и нажимаю пункты меню (каждый из которых загружает новые данные для этого компонента) - каждый все идет хорошо. Для каждого клика - $ onChanges. НО - когда я перехожу на другую страницу и нажимаю там по ссылке на мою страницу (страница, содержащая компонент), мой компонент $ onChanges не срабатывает, хотя я обновляю данные. Тогда, вне зависимости от того, что я хочу сделать в любом меню, он не будет вызывать $ onChanges на моем компоненте. – moshi