使用AngularJS获取数据时出现问题

时间:2015-10-16 13:31:23

标签: javascript angularjs

我刚刚学习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');
    })
}])

2 个答案:

答案 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提供的高级接口