Angular数据在$ http.post成功方法中没有绑定

时间:2014-07-02 16:01:24

标签: angularjs http post data-binding

我在角度js工作时发现了一个奇怪的问题 我正在使用ajax调用获取数据。我将数据绑定到$ scope对象,但是数据绑定后视图没有得到更新 以下是我的代码

  $scope.getPlanDetail = function (){

    $rootScope.planBody.checkUpdate= false;
    $http.post('http://MyServerURL',JSON.stringify($rootScope.planBody)).
          success(function(response){
              $scope.dataVal = response;//Able to view data in console;
              console.log($scope.dataVal)//data json shown in log window
              localStorage.setItem("tempDataVal", JSON.stringify(response));//able to set data in localStorage;
          }
  }

使用ng-click

在btn点击时调用getPlanDetail()函数

我在其他情况下使用相同的功能(使用 get方法。),其中代码正常工作。我发现唯一的差异是当前的AJAX调用花费了大量时间,因为服务器端处理过多及其后期方法我不确定这是否(使用post方法)导致问题结合

在同一视图(.html)上我添加了虚拟按钮ng-click事件。在ajax成功调用之后,我点击按钮并加载视图,因为使用了localStorage变量中的数据。

$scope.dummyClick= function(){
    console.log($scope.dataVal);//giving Undefined
    $scope.dataVal = JSON.parse(localStorage.getItem("tempDataVal"));// this time view binded properly.
}

我不明白为什么数据没有绑定到成功方法中的视图。如果服务器花费太多时间来响应,$ scope会在一段时间后超时吗?

先谢谢。

1 个答案:

答案 0 :(得分:1)

如果要在ajax调用中更改模型,则需要通知角度js您有一些更改。

$ $范围应用();以下行将解决您的问题。这一行将更新范围。

$ scope.dataVal = response;

谢谢,

Santyy