[asp.net]吴重复不绑定后成功 ajax 调用

发布时间: 2017/3/26 3:33:46
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想要使用吴重复指令将一些数据绑定到专区,虽然该调用是成功的我是获取数据并将其存储在能够使用吴重复来显示它的范围变量的 im 一个

     <div data-ng-app="myapp" id="sidestatus" style="position:fixed;top:50%;right:0;height:200px;width:200px;background-color:red;" data-ng-controller="myctrl">//wont bind here after successful execution
             <ul>
                 <li data-ng-repeat="x in obj">
                      {{x.heading+' '+x.id+' '+x.name }}
                 </li>
            </ul>
      </div> 

我的 javascript

 var app = angular.module("myapp", []);
 app.controller("myctrl", function ($scope, $http) {
     var obj2=new Array();
     $.ajax({
         type: "POST",
         url: "NotifierService.asmx/getdata",
         data: {},
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         success:function (response) {
             var res = response.d;
             var res4 = res.split(",");
             for (var i = 0; i < res4.length; i++) {
                 var res2 = res4[i].split(":");
                 obj2[i] = {}
                 obj2[i].heading = res2[0];
                 var res3 = res2[1].split("/");
                 obj2[i].id = res3[0];
                 obj2[i].name = res3[1];
             }
             $scope.obj = obj2; 
            //successfully execute the success function everytime
          },
          error:function () { alert("failure");}
     });
 });

正在发送的数据

           "heading1:23/name1,heading2:24/name2"

解决方法 1:

每当你执行一些代码 AngularJS"控制"功能外的,AngularJS 不知道是否在任何范围,有可能改变,因为这它不要尝试找到所做的更改和修改演示文稿的更改,如果有任何。

在您的代码,你正在用 jQuery Ajax 调用。外部控制的 AngularJS 代码执行该 Ajax 调用的回调,碰巧的是我以前解释。所以你要做的就是告知 AngularJS 范围的东西可能会发生变化。你有两个选择,要做到这一点。

$scope.$digest() 用于告诉 AngularJS 用于检查更改。所以你的代码可能看起来像这样︰

success:function (response) {
  var res4 = res.split(",");
  var res = response.d;
  for (var i = 0; i < res4.length; i++) {
     //... 
  }
  $scope.obj = obj2; 
  $scope.$digest(); //hey AngularJS, look for changes to update the scope!
}

另一种方法是使用 $scope.$适用。这种方法告诉 AngularJS 执行作为参数传递的函数和之后 (是否正确执行或不,投掷与功能例如错误) 检查范围中的更改。所以您的代码可能看起来像︰

success:function (response) {
  $scope.$apply(function() {  //hey AngularJS, execute this function and update the view!
     var res = response.d;
     var res4 = res.split(",");
     for (var i = 0; i < res4.length; i++) {
         //...
     }
     $scope.obj = obj2;
  })
}
官方微信
官方QQ群
31647020