NGリピートを働いていない
<md-list>
<md-list-item ng-repeat="it in cars">
{{ it.name }}
</md-list-item>
</mdlist>
は
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);
コードの上の車コントローラが実行されます(最後の行)、それが正常に動作しています。しかし、私は新しい車(車はmysqlのDBに格納されている)を作成し、self.refreshUI()関数で$ scope.cars配列を更新したいときは、ページmannualyをリフレッシュするまで動作しません。 (新車なし)
カーサービス問題になる可能性が
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;
}
をrefreshUI機能から
console.log($scope.cars)
は正しい結果を返しますがconsole.log(angular.element($0).scope().cars)
は間違った配列を与えますか?
//編集:$ rootScopeが正常に動作していますが、$http
コールから結果として返さ約束を使用していないのはなぜ私はまだ$スコープ
あなたは私がダイジェストサイクルを想定しているかなり確信している車の範囲は右NG-コントローラ – Fergus
である100%よろしいですあなたが$ scope.cars変数を設定した後に "$ scope。$ apply()"をスローすると、正しく更新されますか?私はこれが適切な解決策ではなく、むしろデバッグの提案であると言っているわけではありません。 – sourdoughdetzel
コントローラと$ scopeは1つしかありません。$ apply()はエラー "$ digest already in progress"を返します – user3364397