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'
});

'//这里获得数据'。。。。你return promise了吗?



相关阅读:
laravel在中间件内生成的变量如何传到控制器
vue 路由跳转后 怎样去掉指定的组件?
求一个博客用的tags轮子,怎么都是laravel的。
[webstorm]webstorm如何打开.babelrc文件?
关于ajax请求
模拟草料上传二维码图片,得出识别结果
关于 浏览器 Cache-Control 不能设置问题。
transform属性在这种情况下为什么不生效啊?
怎样通过$.ajax跨域请求斗鱼TV API 取得json数据
cef3 cookie分离
标签添加成功了为什么不显示呢?
PHP水印合成中文乱码怎么解?网上教程没用
chrome下disabled的input不能选中和复制, 有解决办法吗
ps切图出现细线
canvas绘制的时钟,出现多余的黑色线条是怎么回事??
关于页面同时异步请求两个js,渲染页面等待如何优化
关于 promise 的问题:请问在这个短小函数里 then 会被执行几遍?
Vue嵌套路由失效?
php中static和abstractor有啥区别?
如何删除选中的cell中对应的行?



快速导航

Copyright © 2016 phpStudy |