AngularJS使用UI-Router查看不更新

时间:2015-01-18 13:25:22

标签: javascript angularjs

我有以下内容:

<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;
        }

获取视图以呈现模型更新的任何想法?

1 个答案:

答案 0 :(得分:0)

我的问题归结为控制器问题而忽略了ui-router

的工作原理

我有两个状态,modelmodel.create,我声明这两个状态都使用相同的控制器ModelController

对于model.create,当ui-view开启时,它创建了ModelController的新实例

这意味着我将返回的数据推送到一个数组中,该数组在控制器的父状态实例上呈现时未呈现。

要修复我为子状态的控制器参数传递了false,导致它使用与父状态相同的实例并更新正确的数组。