作者:袁韦伦世彦琬育 | 来源:互联网 | 2023-06-03 22:31
Ihave2routesthatshareacontroller,oneneedsdataresolvedpriortotheviewloading,andthe
I have 2 routes that share a controller, one needs data resolved prior to the view loading, and the other does not need the resolved data.
我有两条共享一个控制器的路由,一个需要在视图加载之前解析数据,另一个不需要解析数据。
Routing segment example:
路由段示例:
...
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 example:
控制器示例:
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);
}]);
Is there any way I can get the resolvedData
in the controller without explicitly using the resolve name as a dependency? So a check can be performed?
有没有什么方法可以在控制器中获取resolvedData而不显式使用解析名称作为依赖项?那么可以进行检查吗?
Using the $injector does not work. I would like to do something similar to:
使用$ injector不起作用。我想做类似的事情:
if ($injector.has('resolveData')) {
var resolveData = $injector.get('resolveData');
}
However this does not work even for the route that has the resolveData
set ('/users'):
但是,即使对于具有resolveData set('/ 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');
}]);
Can this be done in angularjs? Or should I just create a new controller?
这可以在angularjs中完成吗?或者我应该创建一个新的控制器?
Thank you.
谢谢。
2 个解决方案