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

标签 javascript angularjs

我有 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/

相关文章:

angularjs - '警告 : Tried to load angular more than once. ' karma 警告

javascript - 在 AngularJS 上使用下拉菜单传递参数

javascript - angularjs选择框设置对象值

javascript - Internet Explorer 如何决定为新浏览器窗口跨越新进程?

javascript - 不允许用户在输入表单 AngularJS 中输入管道字符 '|'

javascript - 在不破坏子节点格式的情况下替换节点顶层的文本

javascript - 语法错误 : Unexpected Identifier in Chrome's Javascript console

angularjs - IONIC未从服务器接收套接字数据

javascript - 在 HTML 和 AngularJS 中为选定的选项标签实现 ng-if 和 ng-repeat

javascript - PHP 将文本文件数组添加到数据库中