成功的$ http调用后更新AngularJS $ scope变量

时间:2016-12-07 19:41:08

标签: javascript angularjs arrays frontend

我有一个简单的控制器和一个简单的$http.post调用,如下所示:

var myApp = angular.module('myApp', []);
var dataShuff = [];
myApp.controller('testCtrl', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
        $scope.greeting = 'Hola!';
        var cookieArr = [];
        $http.post(serverURL, input).then(function (response) {
            $scope.dataShuff = dataShuff = response.data;
            for (var i = 0; i < dataShuff.length; i++) {
                if (typeof cookieArr[dataShuff[i].cookieID] === "undefined") {
                    cookieArr[dataShuff[i].cookieID] = [];
                }
                cookieArr[dataShuff[i].cookieID].push(dataShuff[i]);
            }
            $scope.dataShuff = cookieArr;
        }, function (response) {
            console.log('error ' + response);
        });
    }]);

$scope变量dataShuff在请求完成后更新一次,但在我通过for循环进行一些修改并重新分配变量之后,同样没有在我的视图上获得更新通过{{ dataShuff }}

console.log($scope.dataShuff);正在打印出正确的数据。根据其他SO答案和其他地方,我尝试$scope.$apply$scope.applyAsync甚至$timeout,但仍然无处可去。

如何在视图上更新dataShuff变量?

P.S。我省略了serverURLinput变量,因为API端点属于我的组织,并且不公开。

更新

有趣的是,用var cookieArr = []替换var cookieArr = {}可以解决问题。

查看:

<div ng-controller="testCtrl"><pre> {{ dataShuff }} </pre><pre> {{ dataShuff | json }} </pre><div class="" ng-repeat="visit in dataShuff"><pre>  {{ visit | json }} </pre></div></div>

0 个答案:

没有答案