【问题标题】:Read local file in AngularJS在 AngularJS 中读取本地文件
【发布时间】:2014-02-05 21:53:33
【问题描述】:

我曾经使用 RequireJS 和 Backbone,并使用 requirejs/textrequirejs-plugins 加载我通常用于配置的本地 json 文件。

如何使用 AngularJS 实现相同的功能?

似乎每个人都建议使用 $http,但这是唯一的方法吗? 如果我有 20 个配置文件,我真的需要进行 20 次调用吗?

也许像ng-constant 这样的“首选”方式?

【问题讨论】:

  • 20个配置文件!?这是很多配置!
  • 是的。哦,好吧,主要是标签之类的东西,或者是一长串(固定)汇率。

标签: json angularjs requirejs-text


【解决方案1】:

这就是我所做的。但它虽然使用 $http,所以我希望有人有更好的解决方案。

app.js:

var myModule = angular.module('myApp', []);

myModule.config(function($routeProvider, $locationProvider) {
    $routeProvider.when('/', {
        templateUrl: 'html/home.html',
        controller: 'MainCtrl as ctrl',
        resolve: {
            initializeData: function($q, $timeout, myService) {
                return myService.promiseToHaveData();
            }
        }
    });
});

myService.js:

var myModule = angular.module('myApp');

myModule.service('myService', function($http, $q) {
    var _this = this;

    this.promiseToHaveData = function() {
        var defer = $q.defer();

        $http.get('someFile.json')
            .success(function(data) {
                angular.extend(_this, data);
                defer.resolve();
            })
            .error(function() {
                defer.reject('could not find someFile.json');
            });

        return defer.promise;
    }
});

然后我可以在任何地方注入 myService ,它将包含 json 文件中的所有字段。

我猜你也可以把你的 .json 文件变成 .js 文件,让它们暴露一个全局变量,然后在你的 index.html 中引用它们

【讨论】:

    【解决方案2】:

    你能用jQuery的getJSON函数吗?

    例如:

    $.getJSON("config-1.json", function( data ) {
        // do whatever you want
    });
    

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 2012-10-15
        • 1970-01-01
        • 1970-01-01
        • 2012-02-17
        • 2017-07-07
        • 1970-01-01
        • 2014-02-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多