Der folgende Code funktioniert wie erwartet und der scope.checked Wert wird in der Benutzeroberfläche normalerweise
.directive('comparisonSlider',
function() {
return{
restrict: 'E',
templateUrl: '/app/reports/comparison-slider.html',
controller: function ($scope, $rootScope) {
$scope.checked = false;
$rootScope.$on('compare',
function() {
$scope.checked = true;
},
true);
}
}
}
)
aber der folgende Code funktioniert auch reflektiert, aber die Änderungen an Der Bereich wird nicht in der Benutzeroberfläche angezeigt.
.directive('comparisonSlider',
function() {
return{
restrict: 'E',
templateUrl: '/app/reports/comparison-slider.html',
controller: function ($scope, $rootScope) {
$scope.checked = false;
$rootScope.$on('compare',
function() {
$scope.checked = !$scope.checked;
},
true);
}
}
}
)
Irgendwelche Ideen?
Try $ log.info ($ scope.checked) in Funktion. Möglicherweise müssen Sie $ log service –
injizieren Sie haben nicht viele Informationen zur Verfügung gestellt, aber '$ scope.checked' erstellt' checked' als eine primitive Eigenschaft auf '$ scope', die JavaScript-Vererbungsproblemen unterliegt . Dies schließt Probleme bei der Verwendung von "ng-repeat", "ng-include", "ng-if" oder anderen ähnlichen Anweisungen ein, was bedeutet, dass das Problem in Ihrem HTML-Code liegt. Wenn "checked" ein Objekt oder im Falle Ihrer Antwort eine Eigenschaft eines Objekts (des Controllers) ist, unterliegt es keinen Vererbungsproblemen. Siehe http://stackoverflow.com/questions/14049480/what-are-the-nuances-of-scope-prototypal-prototypical-inheritance-in-angularjs – Claies