我有$ scope.parents变量,它位于控制器" userCrtl"中。问题是在AJAX调用之后它的值没有被更新。我试图在承诺结束后使用$ q来应用更改;但是,我没有成功。我尝试使用$ scope.watch来检测更改,但此方法从未启动过。因此,我的html页面永远不会更新。当我使用console.log($ scope.parents)时,$ scope.parents的值正常显示,但html视图不会更新。如果使用默认值初始化$ scope.parents($ scope.parents =" test"),则会显示此值,但不会再更改。 最令人沮丧的是我在其他应用程序控制器中做同样的事情,一切正常。某些东西只导致以前定义的$ scope变量值显示在html中。 以下是控制器代码:
app.controller("userCtrl", function($scope, userService, $http) {
$scope.panels = userService.get();
$scope.parents = null;
$scope.start = function(panel) {
// Get parents blocks
$http.get(path + "getpaneluser /" + panel.painelUsername).then (function (response) {
$scope.parents = response.data;
// Here the value of parents is normally displayed
console.log($scope.parents);
}, function(error) {
});
};
// Displays only null, even if $scope.parents has a value after the AJAX call
$scope.$Watch('parents', function () {
console.log($scope.parents);
});
});
HTML code:
<div class="col-lg-12" style="padding-right: 0%;">
{{parents}} <!-- value never displayed -->
<div ng-repeat="item in parents" class="declareContainer">
{{item}}
</div>
</div>
谢谢大家的帮助
答案 0 :(得分:2)
在你的ajax调用范围之后。$应用范围
中的数据 $http.get(path + "getpaneluser /" + panel.painelUsername).then (function (response) {
$scope.parents = response.data;
// Here the value of parents is normally displayed
console.log($scope.parents);
$scope.$apply()
}, function(error) {
});