使用.getJSON()填充$ scope

时间:2012-08-24 17:30:28

标签: angularjs

我最近开始玩Angular.js,并且得到了一个非常好的演示项目。但是,当我尝试从后端Web服务加载数据而不是硬编码数组时,我开始挂起。具体来说,在我使用$ .getJSON()。done(...)设置$ scope后,页面似乎没有正确的数据绑定。在.getJSON完成之后,不是仅仅为$ scope分配值,我应该在其他地方/不同地做它吗?我搜索了高低,真的找不到任何有用的角度示例,从后端提取初始数据。

提前感谢您对此的任何帮助!

2 个答案:

答案 0 :(得分:13)

由于您尝试更新Angular之外的$scope,因此您必须使用范围内的$apply方法更改模型。

可能是这样的:

    $.getJSON('ajax/test.json', function(data) {
        $scope.$apply(function(){
            $scope.modelData = data;
        });
    });

使用AngularJS访问后端的首选方法是使用$http$resource服务代替jQuery。您无需使用$scope.$apply即可直接更新$scope.modelData

This post有一个很好的fiddle更新Angular代码之外的模型。

答案 1 :(得分:0)

或者不是使用apply包装,只需在回调函数的末尾调用它,如

  $.getJSON('ajax/test.json', function(data) {
    $scope.data = data;        
    $scope.$apply();
});