直到我开始过滤才显示数据?

时间:2014-06-23 18:02:03

标签: javascript angularjs data-binding

我正在尝试使用AngularJS的数据绑定功能来显示我发送Ajax请求的数据列表。我是AngularJS的新手,所以我知道我在这里遗漏了一些东西。正在填充数据,但只显示我是否包含带有ng-model指令的文本框并开始输入数据。

我知道我的代码不是最佳做法,但我尝试在SharePoint中执行此操作,而且我在使用模块和工厂时遇到问题,所以我试图让一个简单的首先演示设置。任何帮助将不胜感激。

代码

<!-- The data will not show until I start typing in this text box
Other than that I do not need it. -->
<input ng-model="foo" />

<ul ng-controller="SimpleController">
     <li ng-repeat="item in discussions">
         {{item.Title}}
     </li>
</ul>
function SimpleController($scope) {                        
  $.ajax({
     url: requestUri,
     type: "GET",
     headers: {
        "accept": "application/json;odata=verbose",
     },
     success: function (data) {
        $scope.discussions = data.d.results;      
        console.log("SimpleController success callback");
     },
     error: function (err) {
        alert(err);
     }
   });
}

1 个答案:

答案 0 :(得分:1)

我相信正在发生的事情是Angular不知道$.ajax来电何时完成,因此您可以在技术上使用if ( $scope.$$phase ) $scope.$apply(),但我建议重建$.ajax“The Angular Way” :

function SimpleController($scope, $http) {
  $http.get( requestUri )
  .then(function( json ) {
    console.log( json );
    $scope.discussions = json.data;
  });
}

更多阅读:

  • $scope.$apply:手动告诉Angular在更改Angular数据之外的数据时重新计算范围,例如: jQuery的。
  • $http$.ajax的角度版本并自动处理$scope.$apply(推荐)