【发布时间】:2015-09-26 23:42:05
【问题描述】:
我有一个本地对象,我想把它变成一个工厂,以便我的主控制器可以使用它:
//factory
app.factory('items', function($http) {
var items= {}; // define factory object
var items = $http.get('pathtojson/data.json').success(function(response) {
return response.data;
});
return items; // returning factory to make it ready to be pulled by the controller
});
控制器内部(Mainctrl):
<div class="container" ng-repeat="item in items.data" ...
但是,什么也没有发生。我首先通过将json作为数组直接粘贴到工厂中来测试它,所以我有:
app.factory("items", function () {
var items = {};
items.data = [{name: "value"}, {name: "value1"}etc. }];
return items;
});
以上工作正常。我使用this thread 作为参考,但无法让它工作。我做错了什么?
=================
编辑
var app = angular.module('app', []);
//factory
app.factory('itemsFactory', function($http) {
return {
getItems: function () {
return $http.get('pathtojson/data.json');
}
}
});
//controller
app.controller('MainCtrl', function($scope, itemsFactory){
itemsFactory.getItems().then(function(response){
$scope.items = response;
});
});
【问题讨论】:
-
在您的第一个代码示例中,您返回
factory,但在您的第二个代码示例中,您返回items。在您的第一个代码示例中,items与factory有何关系? -
抱歉,这是一个旧版本。 (修正)问题还是一样。
-
我建议设置一个小提琴。