gpt4 book ai didi

javascript - 如何在 Controller 中手动注入(inject)路由解析数据?

转载 作者:数据小太阳 更新时间:2023-10-29 04:08:11 24 4
gpt4 key购买 nike

我有 2 个路由共享一个 Controller ,一个需要在 View 加载之前解析数据,另一个不需要解析的数据。

路由段示例:

...
when('/users', {
controller: 'UsersCtrl',
templateUrl: '/partials/users/view.html',
resolve: {
resolvedData : ['Accounts', function(Accounts) {
return Accounts.get();
}]
}
}).
when('/users/add', {
controller: 'UsersCtrl',
templateUrl: '/partials/users/add.html'
})
...

Controller 示例:

app.controller('UsersCtrl', ['$scope', 'Helper', 'resolvedData', 
function($scope, Helper, resolvedData) {
// this works for the first route, but fails for the second route with
// unknown "resolvedDataProvider"
console.log(resolvedData);
}]);

有什么方法可以在 Controller 中获取 resolvedData 而无需显式使用解析名称作为依赖项?那么可以进行检查吗?

使用 $injector 不起作用。我想做类似的事情:

if ($injector.has('resolveData')) { 
var resolveData = $injector.get('resolveData');
}

然而,即使对于设置了 resolveData ('/users') 的路由,这也不起作用:

app.controller('UsersCtrl', ['$scope', 'Helper', '$injector', 
function($scope, Helper, $injector) {
// this does not work -> fails with the unknown "resolvedDataProvider" as well
$injector.get('resolvedData');
}]);

这可以在 angularjs 中完成吗?还是我应该创建一个新 Controller ?

谢谢。

最佳答案

看来我想出了另一种方法。解析后的数据是 $route 的一部分。因此您可以使用以下方式访问它:

app.controller('UsersCtrl', ['$scope', '$route', 'Helper', 
function($scope, $route, Helper) {

if ($route.current.locals.resolvedData) {
var resolvedData = $route.current.locals.resolvedData;
}
}]);

关于javascript - 如何在 Controller 中手动注入(inject)路由解析数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19230202/

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