Es gibt 1 eckige App, mit 1 Eltern-Controller und einem Kind-Controller. In dem Kind gibt es 1 $ Uhr WATCH-CHILD für OBJ-CHILD, die ein $ emit auslöst. Im Parent gibt es einen Listener für das $ emit, wir nennen es ON-LISTENER und ein $ watch WATCH-PARENT für OBJ-PARENT (das true als drittes Argument verwendet).Winkeluhr nicht gefeuert
Wenn das OBJ-CHILD des Kindes geändert wird, löst es WATCH-CHILD aus, wodurch das $ -Empfang ausgelöst wird. Der übergeordnete Listener ON-LISTENER wird ausgelöst und ändert OBJ-PARENT. Außerdem werden einige $ location-Eigenschaften festgelegt. Die $ Uhr WATCH-PARENT für OBJ-PARENT wird nie ausgelöst (auch wenn der Wert geändert wurde), sowie die Eigenschaften auf $ location nicht in der Browser-URL geändert (ich weiß, dass sie tatsächlich innerhalb des JavaScript geändert werden, Ursache Ich drucke sie).
Um sicherzustellen, dass ON-LISTENER innerhalb eines $ digest aufgerufen wird, habe ich versucht, $ digest am Ende von ON-LISTENER aufzurufen, und habe die erwartete Ausnahme erhalten.
Irgendeine Idee, wenn ich etwas falsch mache? Ich erwarte, dass die Änderungen, die in ON-LISTENER auftreten, WATCH-PARENT und Browser-URL-Änderung auslösen.
Ich werde versuchen, auf jsfiddle zu reproduzieren und diesen Beitrag zu bearbeiten, wenn erfolgreich.
Der Code sieht so aus:
KIND:
$scope.$watch('vars.model', function(newValue, oldValue) {
console.log('model changed');
$scope.$emit('highlightChange', newValue);
}, true);
ELTERN:
$scope.$watch('vars.model.highlight', function(newValue, oldValue) {
console.log('highlight changed');
}, true);
$scope.$on('highlightChange', function(event, value) {
console.log('listener', $scope.vars.model.highlight.categoryId, value.categoryId);
$location.search('category-id', value.categoryId);
$scope.vars.model.highlight.categoryId = value.categoryId;
}
* Jede Idee werden sollte, wenn ich etwas falsch tue? *: Nein, da Sie didn‘ t posten Sie einen beliebigen Code. Beschreiben Sie Ihren Code nicht. Veröffentliche es. –
@yinonby Habe ich richtig verstanden, willst du auf kindliche Variablenänderungen hören? –