Angular UI路由器优化仅一个重新解析



我想将多个请求组合到一个请求,因此不会执行n请求,而是一个。

问题是我不知道如何解决名称对象,这些变量是在ctrl中注入的变量。

例如,现在我已经解决了:

resolve: {
                regions : ["$http", function($http){
                    return $http({...});
                }],
                coordinators: ["$http", function($http){
                    return $http({...});
                }],
                ....
            }

我想要的(不工作)是相同的变量(n名),只有一个请求,将n个值返回到名称的对象:

resolve: {
                [regions,coordinators,...] : ["$http", function($http){
                    return $http({... return values;});
                }]
            }

有什么想法如何?

您可以通过拥有一个服务端点来将您的几个信息收集到一个对象字面上:

function gatherResolves() {
  return { region1.promise, region2.promise, region3.promise };
}

然后在解决方案中您只有一个电话:

.state('foo', {
  resolve: regions: ['$http', function($http) {
    return $http.gatherResolves({ ... });
  }]
})

进入控制器并注入其中,您可以通过破坏(假设您使用ES6)或手动将对象分配给单个呼叫的变量。/p>

constructor(regions) {
  this.splitRegions(this.regions);
}
splitRegions(regions) {
  this.region1 = regions['region1'];
  this.region2 = regions['region2'];
}

我可能会混合一些语法,因为我认为我认为ES5/ES6。但是您明白了,可以将其全部提炼为1个解决呼叫。真正的问题是,为什么您只是在转移逻辑。另外,好处之一是儿童国家继承决心,因此您可以构建代码以利用这一点。只有一个解决方面的一切都意味着您正在携带该父母的所有子女。

相关内容

最新更新