我有一個Angular工廠,它只是使用$http
服務從服務器上的靜態json文件中獲取數據。使用工廠數據填充控制器的正確方法?
module.factory('ShowsProvider', function ($http) {
return {
get: function() {
return $http.get('/static/shows.json');
}
};
});
我然後有一個控制器,該注入工廠,並調用上述定義的其get()
方法。
module.controller('RegisterController', ['ShowsProvider', function (ShowsProvider) {
var vm = this;
vm.shows = [];
ShowsProvider.get().then(function (shows) {
vm.shows = shows.data;
});
}]);
這很有效,但在我的控制器中有這樣的自由浮動函數調用感覺很尷尬。在Angular中是否有某種模式可以更乾淨地調用這個工廠,並將數據提供給我的控制器?或者是我有一個「可接受的」方法?
這是可以接受的 - 你總是可以將這個調用包裝在一個被調用的函數中 - 但除此之外,它是一個好的。您還可以擴展在服務層調用的'.then()',以防止有任何數據按摩需要完成。 – tymeJV
你可能會喜歡$ resource稍微好一些,但你基本上仍然在某處調用函數。 – Casey
始終善於解決控制器中的承諾。如果你必須做一些預處理,你可以在工廠中添加一些邏輯,如在這個最佳實踐中描述 - > https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#data-服務 – rick