【发布时间】:2016-05-03 20:12:31
【问题描述】:
我正在寻找有关从本地 JSON 文件中检索数据并处理响应的最佳方式的一些信息。浏览 Stack Overflow 后,我有一些复杂的想法,因为我看到了做同一件事的多种方法(尽管没有解释为什么一种可能或可能不是首选)。
基本上,我有一个 Angular 应用程序,它利用工厂从 JSON 文件中检索数据;然后我等待响应在我的控制器中解析,然后在我的 html 文件中使用它,类似于以下内容:
选项 1
工厂:
comparison.factory('Info', ['$http', function($http) {
var retrievalFile = 'retrievalFile.json';
return {
retrieveInfo: function() {
return $http.get(retrievalFile);
}
}
}]);
控制器:
comparison.controller('comparisonController', ['$scope', 'Info', function($scope, Info) {
Info.retrieveInfo().then(function(response) {
$scope.info = response.data;
});
}]);
我的主要争论点是弄清楚何时最好等待响应解决,或者它是否重要。我正在考虑让工厂返回已履行的承诺,并等待控制器也检索数据。在我看来,最好将所有数据检索从控制器抽象到工厂中,但我不确定这是否延伸到等待工厂本身返回实际数据。考虑到这一点,我对是选择选项 1 还是选项 2 感到困惑,并且非常感谢更有经验/合格的开发人员提供一些反馈!
选项 2
工厂:
comparison.factory('Info', ['$http', function($http) {
var retrievalFile = 'retrievalFile.json';
return {
retrieveInfo: function() {
return $http.get(retrievalFile).then(function(response) {
return response.data;
});
}
}
}]);
控制器:
comparison.controller('comparisonController', ['$scope', 'Info', function($scope, Info) {
Info.retrieveInfo().then(function(response) {
$scope.info = response;
});
}]);
提前感谢您的任何意见/建议!
【问题讨论】:
-
并不总是最好的答案,但 Angular 的美妙之处在于它对如何为您的“模型”处理或维护数据保持冷静。我看到的最佳实践类似于选项 1。我认为从可读性的角度来看,它在服务、数据和控制器之间提供了很好的链接。然而,这只是我的意见:-D
-
我会建议选项 1,因为那时您将对内部的所有方法都有命令,例如 successCallback 和 errorCallback。使用 promise 会更好(即 angular $q 服务)
标签: javascript angularjs json factory