Angularjs变量不会在视图

时间:2018-01-05 21:30:26

标签: javascript angularjs

我有一个控制器在搜索结果上返回一个JSON onbject,我使用ng-repeat来列出它们。我使用一个带有与该特定对象的ID绑定的ng-click事件的按钮。

<div ng-controller="Gid"><button ng-click="getGid(val['gid'])">Test</button></div>

此div位于执行ng-repeat的较大控制器内。不确定它是否有所作为,但我对此表示怀疑。

然后在'Gid'控制器中我有'getGid()'函数,它将id作为参数。

.controller('Gid', function($scope, $http, $location){

$scope.getGid = function(id){

    $http({

        url: "http://127.0.0.1:5000/places/search_places",
        method: "POST",
        data: null

    }).then(function(response){

          // currently I'm just sending null to test this so I know the    
         // response comes back bad

    }).catch(function(response){


        $scope.gid = id;
        console.log($scope.gid); // I can see the correct id in console
        $location.path('/view1')

    })

}

})

在此之后,我会认为一切都应该好。我可以在控制台中看到正确的ID确实出现了。但是,当路径更改为view1

<div ng-controller="Gid">
1 - {{ gid }}
</div>

gid变量保持为空。我已经尝试将其设置为null以从控制器的顶部开始,这没有任何区别。我在没有HTTP调用的情况下尝试过,没有任何区别。但是无论如何我都需要这个函数才能让这个函数顺利进行。

那是什么给出的?当我可以清楚地看到它在控制台中更新时,为什么我的变量在视图方面没有得到更新。

1 个答案:

答案 0 :(得分:-2)

尝试manually update scope

$scope.$apply(function () {
        $scope.gid = id;
});