我有以下内容:
<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;
}
获取视图以呈现模型更新的任何想法?
答案 0 :(得分:0)
我的问题归结为控制器问题而忽略了ui-router
我有两个状态,model
和model.create
,我声明这两个状态都使用相同的控制器ModelController
。
对于model.create,当ui-view
开启时,它创建了ModelController
的新实例
这意味着我将返回的数据推送到一个数组中,该数组在控制器的父状态实例上呈现时未呈现。
要修复我为子状态的控制器参数传递了false,导致它使用与父状态相同的实例并更新正确的数组。