我在 Angular 中有一项服务,可以从数据库表中获取查询列表。用户选择一个并移动到另一个视图以使用它。当用户点击回到第一个视图时,我想避免重新获取查询列表。查询列表存储在服务中,但鉴于我的 fetch 例程使用 .then 和 promise,我很难将其交还给控制器。
app.service('queryService', function ($http)
{
var querys = new Object();
this.loadQueryList = function()
{
if (querys!=null)
{
//how to return the querys list here? caller expecting a promise
}
var promise = $http.post("php/datapump.php", { action: "FETCH", item: "QUERYS", id1: null, id2: null})
.then(function (response)
{
querys=response.data;
return querys;
});
return promise; // Return the promise to the controller
};
});
在控制器初始化中,服务被调用:
queryService.loadQueryList().then(function(d)
{
$scope.querys = d;
$scope.selectedquery=queryService.getSelectedQuery();
});
或者有更好的方法吗?我可以想象在服务中设置一些标志来解决这个问题,但它看起来很难看。我只是想避免第二次获取数据。