Ich habe Winkel 1.5 Komponente innerhalb HTML-Seite (nicht übergeordnete Komponente) und die Komponente wird nicht mehr als $ onChanges bei Änderung aufrufen: ist hier die mit HTML: . . .
<my-comp standards-data="standardsData"></my-comp>
. . .
hier ist die Komponente:
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;
};
}
Wenn ich neue Daten in der Abfrage des HTML holen, die meine Komponente enthält, es wird die Komponente nicht beeinflussen. Ich bekomme nur in die $ onInit der Komponente und nach $ scope.standardsData Änderungen (in der enthaltenen html/ctrl), die $ OnChanges meiner Komponente wird nicht aufrufen.
Ich hoffe, ich habe das Problem richtig beschrieben, Danke!
Vielen Dank für Ihre Antwort! Eigentlich glaube ich nicht, weil StandardsData ein Objekt ist. Es gibt 2 Fälle in der Anwendung: 1. Wir klicken auf einen Link und Routing in diesem Bildschirm. Wenn Sie dies tun, gibt es keine Aktivität im OnChanges-Ereignis. (nur onInit) ... 2. Wenn ich die Seite aktualisiere (wie F5), beginnt das onChanges Ereignis in Aktion zu treten. keine Idee? Danke! – moshi
@moshi - Zwei Dinge bewirken, dass '$ onChanges' ausgelöst wird: 1) Wenn die Komponente zuerst initialisiert wird, 2) wenn Änderungen an einer Bindung vom Elternteil vorgenommen werden. Die F5-Aktualisierung bewirkt, dass Sie die Änderungsaktivität von der Initialisierung sehen. Sie sehen es nie wieder, weil Sie an eine Objektreferenz gebunden haben, die sich nicht ändert. Ich werde meine (richtige) Antwort löschen, wenn Sie möchten. – sh0ber
Vielen Dank für Ihre Antwort. Ich stimme Ihnen zu, dass $ onChanges bei der Initialisierung auftritt. Ich sehe nicht, dass es immer bei Datenänderungen auftritt. Es ist wie wenn ich die Seite aktualisieren und klicken Sie auf die Menüpunkte (die jeder von ihnen lädt neue Daten für diese Komponente) - jede Sache geht gut. Für jeden Klick - die $ onChanges passiert. ABER - wenn ich auf eine andere Seite gehen und klicken Sie dort auf einen Link zu meiner Seite (die Seite, die die Komponente enthält), meine Komponente $ onChanges wird nicht ausgelöst, obwohl ich die Daten zu aktualisieren. Dann, egal, jedes Menü klicke ich - es wird $ onChanges auf meiner Komponente nicht verursachen. – moshi