我刚刚学习Angular JS。 我正在尝试使用ajax数据库调用的结果填充scope变量。 ajax调用返回一个propper json对象(一个数组),但是我无法在我的HTML页面上输出$ scope.contentType。
任何人都可以看到任何不合理的原因吗?
app.controller('MainController', ['$scope', function($scope){
var allMyData;
$scope.title = 'Content Types List';
var request = $.ajax({
type: "POST",
dataType: "json",
url: "/angularJS/dbServices.cfc?method=getContentTypes"
})
request.done(function(data){
allMyData = data.DATA;
console.log(allMyData);
$scope.contentTypes = allMyData;
})
request.fail(function(){
console.log('fail');
})
}])
答案 0 :(得分:6)
您的$scope
未在视图上更新的原因是您要在$digest
周期之外更改该值。您需要使用AngularJS的内置$http
service。
您可以在上面的链接中获得更多信息/文档。
答案 1 :(得分:1)
这是因为你使用的jQuery ajax没有触发角度摘要。您可以使用以下方法修复它:
request.done(function(data){
$scope.apply(function() {
allMyData = data.DATA;
console.log(allMyData);
$scope.contentTypes = allMyData;
})
})
但是,这不是最佳做法。相反,您应该1)使用其他答案中提到的$ http服务2)将整个逻辑移动到单独的服务3)使用ngResource提供的高级接口