[英]AngularJS View not updating using UI-Router
我有以下幾點:
<div ng-repeat="m in model">
{{m.prop1}}{{m.prop2}}
</div>
控制器內部是一個延遲承諾,它從服務器獲取對象。
promise.then(function(e){
$scope.model.push(e); // e is an object, which is pushed into the array.
$scope.$apply(); // causes digest already in progress error so put inside $timeout
});
我已經嘗試了$ timeout和$ scope。$ apply() ,但視圖仍然不會更新:
var promise = ModelService.create(model,data);
promise.then(function(e){
$timeout(function(){
$scope.$apply(function(){
$scope.model.push(e);
});
})
});
更新:ModelService.js
create: function(model, data){
var defer = $q.defer();
$http.post('/api/'+model+"/create", data).success(function(e){
defer.resolve(e);
}).error(function(e){
defer.reject(e);
});
return defer.promise;
}
有什么想法可以獲取視圖以渲染模型更新?
我的問題歸結為控制器問題,而忽略了ui-router
工作原理
我有兩個狀態, model
和model.create
,我聲明了這兩個狀態以使用相同的控制器ModelController
。
當ui-view
的model.create它創造的新實例ModelController
這意味着我正在將返回的數據推入一個未呈現的數組,因為該數組在控制器的父狀態實例上呈現。
為了解決這個問題,我為子狀態的controller參數傳遞了false,導致其使用與父狀態相同的實例並更新了正確的數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.