angular.js - angular-ui-router的预加载与控制器注入

查看:124
本文介绍了angular.js - angular-ui-router的预加载与控制器注入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

ui-router的预加载 resolve获得数据后,如何向控制器注入?

备注:

  • $state中,我通过controllerUrl引入控制器文件。

  • 我的ui-router版本为0.4.2

路由代码 ↓

$stateProvider.state('dashboard', {
    url: '/dashboard',
    templateUrl: 'views/dashboard/index.html',
    resolve: {
        getList: function ($stateParams, $NetRequest){
            var options = {type: 'charts'};
            
            $NetRequest.post(options).then(function($ref){
                return $ref.data;
            });
        }
    },
    controllerUrl: 'views/dashboard/index',
    controller: 'DashboardController',
    controllerAs: 'vm'
});

服务代码 ↓

service.post = function($options){
    var deferred = $q.defer();
    
    // 省略请求函数...
    
    return deferred.promise;
};

这时候如果直接在控制器中注入 getList,结果为undefined

我看官方文档介绍,有个$inject的参数,可惜没有实例,我不清楚该如何使用。

这个问题已被关闭,原因:问题已解决 - 问题已解决,且对他人无借鉴意义

解决方案

问题解决了,其实方法很简单 - -

$stateProvider.state('dashboard', {
    url: '/dashboard',
    templateUrl: 'views/dashboard/index.html',
    resolve: {
        getList: function ($stateParams, $NetRequest){
            var options = {type: 'charts'};
            
            return $NetRequest.post(options);
            // 因为 $NetRequest.post 已经返回了结果
        }
    },
    controllerUrl: 'views/dashboard/index',
    controller: 'DashboardController',
    controllerAs: 'vm'
});

这篇关于angular.js - angular-ui-router的预加载与控制器注入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆