AngularJS如何将变量传递给服务?

4

我有这样一个工厂:

factory('getJson', ['$resource', function($resource) {
    return $resource('json/greetings.json', {}, {
      query: {method:'GET', isArray:true}
    });
  }]);

这个文件名是硬编码的,为'greetings.json',我希望工厂根据视图中的复选框获取文件:

<li><input type="checkbox" ng-model="includeVeggies" />Veggies</li>
<li><input type="checkbox" ng-model="includeGreetings" />Greetings</li>

你有什么想法如何处理这个问题吗?

1个回答

7
你可以返回一个函数:
.factory('getJson', ['$resource', function($resource) {
    return function (file) {
        return $resource(file, {}, {
            query: {method:'GET', isArray:true}
        });
    };
}]);

然后在您的控制器中:

.controller('MyController', ['getJson', function (getJson) {
    getJson('json/greetings.json');
});

这是一个 Plnkr


它返回未定义。 - Shining Love Star
另外,我该如何进行回调以在服务器获取文件后才分配响应? - Shining Love Star
抱歉,有一个打字错误。 - Danilo Valente
明白了!我漏掉了 getJson('json/greetings.json').query()。 - Shining Love Star

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接