我正在尝试使用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);
}
});
}
答案 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
(推荐)