将angularjs与静态jsonp一起使用只能工作一次

时间:2013-06-28 05:05:38

标签: javascript service angularjs jsonp factory

我从jsonp文件中获得了一些数据。

worm.factory('simpleFactory', function ($http, gf) {
var simpleFactory = "";
return {
    getJson: function ($scope) {
        var url = 'myfile.json?callback=JSON_CALLBACK';
        $http.jsonp(url).success(function (data) {
                console.log("Got this", data);
        }).error(function (data, status, headers, config) {
                console.log("Data not available");
            });

    }
}
});

它本身在页面中运行良好。但是,如果同一个应用程序再次调用该查询,或者该应用程序在页面下方进一步复制(相同数据但图形的不同部分),我会收到错误。

鉴于它是一个静态json文件,我该怎么办? (或者我可以在同一页面上运行相同的应用程序但彼此隔离吗?)

1 个答案:

答案 0 :(得分:0)

首先,如果您没有打电话,请从顶部删除GF。 正确的方法应该是:

worm.factory('simpleFactory', function ($http) {
return {
    getJson: function (callback) {
        var url = 'myfile.json?callback=JSON_CALLBACK';
        $http.jsonp(url).success(function (data) {
                callback(data);
        });

    }
}
});

将回调发送到该功能,以便您的控制器可以接收它。 我从来没有使用$ http.jsonp,但$ http就像这样

worm.factory('simpleFactory', function ($http) {
return {
    getJson: function (callback) {
        var url = 'myfile.json?callback=JSON_CALLBACK';
        $http({method: 'jsonp', url: 'myfile.json?callback=JSON_CALLBACK'}).success(function (data) {
                callback(data);
        });

    }
}
});

如果你发布你的控制器并查看你是否正在正确地进行翻转,那将会更好。

希望能够发挥作用