簡體   English   中英

AngularJS視圖未使用UI-Router更新

[英]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工作原理

我有兩個狀態, modelmodel.create ,我聲明了這兩個狀態以使用相同的控制器ModelController

ui-view的model.create它創造的新實例ModelController

這意味着我正在將返回的數據推入一個未呈現的數組,因為該數組在控制器的父狀態實例上呈現。

為了解決這個問題,我為子狀態的controller參數傳遞了false,導致其使用與父狀態相同的實例並更新了正確的數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM