AngularJS不获取JSON数据

AngularJS don’t get JSON data

本文关键字:数据 JSON 获取 AngularJS      更新时间:2023-09-26

我想通过使用AngularJS的$http.get从JSON文件中获取数据。我用"new way"来写AngularJS脚本(链接)。

恰好

什么也没发生,Firebug什么也没告诉我。

我认为问题是在我的activate()函数代码中,我没有真正理解承诺。

function activate() {
    return $http.get('test.json').then(function(data) {
        vm.result = data;
        return vm.result;
    });
} 

你有什么想法吗?

我发现了几个问题。

首先,在你的plunker代码中有:

controller.$inject = ["$http"];
function controller() {

你的控制器函数签名中缺少$http参数

function controller($http) {

一旦我解决了这个问题,我发现你的index.html页面绑定到{{c.value}},但你的控制器从未定义值属性。也许这应该是{{c.result}} ?如果我做这些改变,我得到一个可见的结果。

在你的then回调中,你不能在那一点上return。简单地返回$http调用本身,它将是一个promise,并解析它。此外,您的控制台应该告诉您$http is undefined之类的东西,因为您没有正确注入此服务。

function activate() {
    return $http.get('test.json')
}
[...]
activate().then(function(response) {
    vm.result = response.data;
});

活塞-演示


旁注-你可能想把activate()包装成一个可重用的服务,以保持这个逻辑在我们的控制器之外,所以我们将把定义的服务注入controller而不是直接注入$http

Plunker -演示与此逻辑包装在一个简单的服务