问题 使用.getJSON()填充$ scope


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

在此先感谢您对此的任何帮助!


5946
2017-08-24 17:30


起源



答案:


既然你正在尝试更新 $scope 在Angular之外,您将不得不使用 $申请 关于范围的方法。

也许是这样的:

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

使用AngularJS访问后端的首选方法是使用 $ HTTP 要么 $资源 代替jQuery的服务。你不必使用 $scope.$apply 你可以更新你的 $scope.modelData 直。

这个帖子 有一个好的 小提琴 在Angular代码之外更新模型。


13
2017-08-24 18:20



这是非常感谢!虽然你的例子似乎工作得很完美,我喜欢你指出使用apply,因为这有助于我理解它是如何工作的 - 我应该只使用http或资源,因为这些似乎是你所说的更优先。再次感谢! - jkat98


答案:


既然你正在尝试更新 $scope 在Angular之外,您将不得不使用 $申请 关于范围的方法。

也许是这样的:

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

使用AngularJS访问后端的首选方法是使用 $ HTTP 要么 $资源 代替jQuery的服务。你不必使用 $scope.$apply 你可以更新你的 $scope.modelData 直。

这个帖子 有一个好的 小提琴 在Angular代码之外更新模型。


13
2017-08-24 18:20



这是非常感谢!虽然你的例子似乎工作得很完美,我喜欢你指出使用apply,因为这有助于我理解它是如何工作的 - 我应该只使用http或资源,因为这些似乎是你所说的更优先。再次感谢! - jkat98


或者代替使用apply包装,只需在回调函数的末尾调用它

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

0
2017-11-18 19:19