ng-repeat in md-sidenav
<md-list>
<md-list-item ng-repeat="it in cars">
{{ it.name }}
</md-list-item>
</mdlist>
Auto-Controller
self.refreshUI = function(select) {
carService.getAllCars()
.then(function (res) {
$scope.cars = carService.carsList;
console.log($scope.cars);
}, function (err) {
//error
})
};
// Load all registered cars
self.refreshUI(null);
Above Code ausgeführt wird, wenn die Steuerung (letzte Zeile) geladen wird, und es funktioniert gut. Aber wenn ich ein neues Auto erstelle (Autos werden in mysql db gespeichert) und ich will $ scope.cars array durch die Funktion self.refreshUI() aktualisieren, wird es nicht funktionieren, bis die Seite aktualisiert wird.
console.log($scope.cars)
aus refreshUI Funktion korrektem Ergebnis kehrt aber console.log(angular.element($0).scope().cars)
gibt falsche Array (ohne neue Autos)
Car Service
function carService($q, $http) {
var cars = this;
cars.carsList = {};
cars.getAllCars = function() {
var defer = $q.defer();
$http.get("http://car.app/getCars")
.success(function(res) {
cars.carsList = res;
defer.resolve(res);
})
.error(function(err, status){
defer.reject(err);
});
return defer.promise;
};
return cars;
}
Wo könnte das Problem sein?
// edit: $ rootScope funktioniert gut, aber ich möchte noch $ Umfang
Sind Sie 100% sicher, dass die Autos Umfang in der rechten ng-Controller ist – Fergus
ich ziemlich sicher bin Zyklus ein verdauen soll auf .resolve Aufruf zu feuern, aber nur um sicherzustellen, dass, wenn Sie einen "$ scope. $ apply()" werfen, nachdem Sie die Variable $ scope.cars gesetzt haben, wird es korrekt aktualisiert? Ich sage nicht, dass dies die richtige Lösung ist, sondern eher ein Debugging-Vorschlag. – sourdoughdetzel
Es gibt nur einen Controller und $ scope. $ Apply() gibt mir den Fehler "$ digest is in progress" – user3364397