nicht möglich Ich entwickle einen Filter in angleJS. Alles funktioniert gut, aber nur an einer Stelle kann ich nicht auf das Scope-Objekt zugreifen, aber wenn ich den Code ändere, funktioniert es gut, aber ich möchte wissen, was das Problem ist. Ich glaube, mein Verständnis ist falsch bezüglich Umfang und Direktiven.
innerhalb einer Richtlinie ich Zugriff auf ein Array und in scope.watch Funktion versuche ich das Array zuzugreifen, aber es funktioniert nicht
Code arbeiten
var currentScope=scope.mainList[scope.$index].list;
//this will hit whenever any of the scope variable changes
scope.$watch(function() {
var hasTrue, hasFalse;
angular.forEach(currentScope, function (v) {
if (v["isSelected"]) {
hasTrue = true;
} else {
hasFalse = true;
}
});
if (hasTrue && hasFalse) {
iElement.attr('checked', false);
// iElement.addClass('greyed');
} else {
iElement.attr('checked', hasTrue);
// iElement.removeClass('greyed');
}
}, true);
dies nicht funktioniert
var currentScope=scope.mainList[scope.$index].list;
//this will hit only when this corresponding scope variable changes
scope.$watch(currentScope,function (newVal) {
var hasTrue, hasFalse;
angular.forEach(newVal, function (v) {
if (v["isSelected"]) {
hasTrue = true;
} else {
hasFalse = true;
}
});
if (hasTrue && hasFalse) {
iElement.attr('checked', false);
// iElement.addClass('greyed');
} else {
iElement.attr('checked', hasTrue);
// iElement.removeClass('greyed');
}
}, true);
Ich brauche diesen zweiten Code, aber wenn ich eine der Variablen ändert, trifft sie nicht und es kommt undefiniert
bitte diesen Link unten überprüfen wird es mehr Idee geben .....
die Variable nicht zugänglich in der zweiten Code ist? – Jigar7521
@ Jigar7521: Im ersten Code sehen wir den gesamten Bereich, aber in der zweiten nur das spezifische Array, aber dieses zweite trifft nicht, bitte überprüfen Sie meine Geige Sie werden das Problem verstehen – user3501613
Sie sind ** nicht ** beobachten den gesamten Umfang in das erste Beispiel. Sie beobachten die bereitgestellte Funktion auf Änderungen ihres Rückgabewerts. Bitte lesen Sie hier über $ watch: https://docs.angularjs.org/api/ng/type/$rootScope.Scope. Es nimmt zuerst einen Ausdruck (entweder Zeichenfolge oder Funktion) und das zweite Argument ist der Listener (von eckig aufgerufen, wenn er Änderungen im Ausdruck erkennt). Sie könnten die Idee haben, dass Ihr Code für jede Änderung im Bereich aufgerufen wird, aber angular wird diese Funktion mehrmals aufrufen, um Änderungen im Ausdruck zu erkennen. – Tobi