我想寫一個公開一個簡單的用戶API的工廠。我是AngularJS的新手,我對工廠以及如何使用它們感到困惑。我看過其他主題,但沒有一個與我的用例很相稱。使用工廠來公開一個簡單的API
爲了簡單起見,我希望實現的唯一功能是獲取數組中的所有用戶,然後通過注入的工廠將它們傳遞給控制器。
我存儲在一個JSON文件中的用戶(現在我只想讀取文件,而無需修改數據)
users.json:
[
{
"id": 1,
"name": "user1",
"email": "[email protected]"
},
{
"id": 2,
"name": "user2",
"email": "[email protected]"
}
]
工廠我試圖寫應該是這樣的:
UsersFactory:
app.factory('usersFactory', ['$http', function ($http) {
return {
getAllUsers: function() {
return $http.get('users.json').then(
function(result) {
return result.data;
},
function(error) {
console.log(error);
}
);
}
};
}]);
最後,控制器調用會是這樣:
UsersController
app.controller('UsersCtrl', ['$scope', 'usersFactory', function($scope, usersFactory){
usersFactory.getAllUsers().then(function (result) {
$scope.users = result;
});
}]);
我在網上搜索,它好像它是不是真的用這個工廠的一個很好的做法方式,如果我想要實現更多的功能,比如向數據源添加/刪除新用戶,或者以某種方式將數組存儲在工廠中,那麼這不是辦法。我見過一些地方,工廠的使用類似於new UsersFactory()
。
嘗試使用API時使用工廠的正確方法是什麼?
是否可以使用包含$http.get()
結果的對象初始化工廠,然後通過控制器以這種方式使用它?
var usersFactory = new UsersFactory(); // at this point the factory should already contain the data consumed by the API
usersFactory.someMoreFunctionality();
我總是使用'$ resource'來消費api,它在處理寧靜的apis時爲你做了很多工作。但在你的情況下,一個簡單的http應該沒問題,因爲你只是使用一個普通的json文件。你沒有消費api。 –
你打算做多個'getAllUsers()'調用,還是隻是你的應用程序的一次調用? – allienx
@KevinB我只是爲了簡單而使用普通的json,這個應用程序的真正用途是使用RESTful API,但從客戶的角度來看,它應該不是真的重要。 –