我遇到一个问题,即调用$ 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) {
});
};
请让我知道我在这里做错了什么。
答案 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 );