gpt4 book ai didi

javascript - 使用带有注入(inject) promise 的 ngRoute 'resolve' 参数

转载 作者:搜寻专家 更新时间:2023-11-01 05:23:20 25 4
gpt4 key购买 nike

我已经配置了几个路由的 resolve 参数来返回一个 promise ,以便延迟 Controller 的实例化,直到 promise 被解决。目前我正在使用函数符号,而不是指定要注入(inject)的字符串。

例如:

.when('/article/:id', {
templateUrl: 'app/article/article.html',
controller: 'ArticleController',
resolve: {
article: ['Content', '$route', function (Content, $route) {
return Content.get({ contentId: $route.current.params.id }).$promise;
}]
}
})

article 参数已正确注入(inject)已解析的 promise 值。

但是,我想保持干燥并通过指定一个字符串来注入(inject)这个值,就像mentioned in the documentation一样。 .

当我设置一个工厂函数来提供这样的 promise 时,该实例只被正确注入(inject)一次(第一次)。此后,使用相同的 promise ,因为 AngularJS 注入(inject)服务已缓存实例。

.factory('contentPromise', ['Content', '$route', function (Content, $route) {
return Content.get({ contentId: $route.current.params.id }).$promise;
}])

是否可以指定每次请求时都必须运行工厂函数?或者以其他方式实现我的目标?

最佳答案

你的第一个例子是要走的路,我想你可以像这样走一点“DRYer”:

.when('/article/:id', {
...
resolve: {
article: ['contentPromise', function (contentPromise) {
return contentPromise();
}]
}
})

服务:

.factory('contentPromise', ['Content', '$route', function (Content, $route) {
return function() {
return Content.get({ contentId: $route.current.params.id }).$promise;
};
}])

关于javascript - 使用带有注入(inject) promise 的 ngRoute 'resolve' 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21735221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com