AngularJS:$ http请求问题 - 没有为jQuery函数调用更新DOM

时间:2015-12-07 08:44:40

标签: javascript angularjs json

我遇到一个问题,即调用$ http请求不会更新用于jQuery函数调用的DOM。

请查看Plunker

在我的代码script.js中,出于测试目的,我将$ scope.components作为全局函数和函数。 但是当我将json值硬编码到全局变量时,一切正常。当我将json作为$ http响应时,树结构的展开和折叠功能停止工作。

以下是我的$ http请求代码

$scope.init = function init() {
$http.get('treeData.json').success(function(data) {
  $scope.components = data;
}).error(function(data) {

});

};

请让我知道我在这里做错了什么。

4 个答案:

答案 0 :(得分:2)

这是因为你的jQuery代码在从treedata.json获取数据之前就已经执行了。 $http将创建一个承诺,因此在承诺得到解决后,移动jQuery逻辑。  我已经更新了plunker。

[http://plnkr.co/edit/XuxO29FZUoXf84nVvjrg?p=preview][1]

答案 1 :(得分:0)

您应首先定义组件,如下所示: var name = "Image" + i.ToString(); var imageX = CanvasLayout.Children.OfType<Image>().Single(i => i.Name == name);

答案 2 :(得分:0)

看起来从服务器返回的数据不是JSON格式。默认情况下$http.get接受JSON返回类型。因此,您的成功功能无法执行。

<强>更新 您可以使用$ http检查angular documentation。建议的方法是使用get,如下所示。

$http.get('/someUrl', config).then(successCallback, errorCallback);

答案 3 :(得分:0)

尝试$ scope。$ apply(     $ scope.components = data   );