Javascript AngularJS don’;无法获取JSON数据
我想通过使用AngularJS的Javascript AngularJS don’;无法获取JSON数据,javascript,json,angularjs,Javascript,Json,Angularjs,我想通过使用AngularJS的$http.get从JSON文件获取数据。 我使用“新方法”编写AngularJS脚本() 什么都没发生,萤火虫什么都没告诉我 我想问题出在我的activate()函数代码中,我真的不理解承诺 function activate() { return $http.get('test.json').then(function(data) { vm.result = data; return vm.result; })
$http.get
从JSON文件获取数据。
我使用“新方法”编写AngularJS脚本()
什么都没发生,萤火虫什么都没告诉我
我想问题出在我的activate()
函数代码中,我真的不理解承诺
function activate() {
return $http.get('test.json').then(function(data) {
vm.result = data;
return vm.result;
});
}
你知道这一点吗?你无法在
回调中返回,然后返回。只需返回$http
调用本身,这将是一个承诺,并解决它。另外,您的控制台应该告诉您类似$http未定义的内容,因为您没有正确注入此服务。注意以下几点
function activate() {
return $http.get('test.json')
}
[...]
activate().then(function(response) {
vm.result = response.data;
});
-演示
旁注-您可能希望将activate()
包装到一个可重用的服务中,以将此逻辑排除在控制器之外,因此我们将把定义的服务注入controller
而不是直接注入$http
-demo将此逻辑包装在一个简单的服务中我发现了几个问题
首先,在plunker代码中,您有:
controller.$inject = ["$http"];
function controller() {
控制器函数签名中缺少$http参数
function controller($http) {
一旦我修复了这个问题,我发现index.html页面绑定到了{{c.value}}
,但您的控制器从未定义值属性。也许这应该是{{c.result}}
?如果我做了这些更改,我会得到一个可见的结果。vm.result=response.data代码>谢谢,谢谢你额外的完整回复:)但我认为$http没有正确实现,因为Firebug告诉我“TypeError:href为null”,我看到这是一个Firebug的bug,当$http有错误时出现。但是为什么它在Plunker上工作而在我的电脑上不工作呢?这很奇怪。您的工作副本和plunker示例还有什么不同?@Carapatte您在这方面有什么进展吗?我的答案能帮到你吗?是的,谢谢,但我认为它不起作用,因为我需要一些服务器来运行$http(就像克莱弗利斯所说的)。如果你正在寻找“为什么这不起作用?”,那么这应该能帮到你。如果您想了解更多关于如何编写遵循John Papa的社区贡献风格指南的代码的信息,那么您可能需要在上发布。在编写此代码时,您肯定会在样式指南中遗漏一些要点,但我认为这是一个快速组合,试图找出这一切是如何工作的。FWIW,您可以使用[CodeReview.SE]
自动解析链接。没问题,它也适用于其他网站[Programmers.SE]
等:)谢谢,经典错误和好建议:)但是,正如您在我对scniro响应的评论中所看到的,$http://您的web服务器是否配置为服务.json
静态文件?在IIS中,这需要添加到“已知mime类型”部分。检查您使用的任何web服务器是否已配置
我不确定是否使用web服务器,我只有一个.html页面、一个.js页面和一个.json页面。我认为这里面没有服务器。所以你使用FireFox的本地文件夹已经用完了。我认为在这种情况下,引擎盖下的$http
ajaxapi可能无法正常工作,因为我知道其中涉及任何XMLHttpRequest
。哦,好吧,所以我必须做一些XMLHttpRequest。您的意思是“怀疑”吗?正确为了使用$http,您需要某种web服务器来为您的文件提供服务。请原谅我的英语:)