$ scope永远不会更新 - Angular 1.x

时间:2017-05-31 11:41:03

标签: angularjs angularjs-scope

我有$ 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>

谢谢大家的帮助

1 个答案:

答案 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) {
        });