angular.js - angular-ui-router的预加载与控制器注入
ringa_lee
ringa_lee 2017-05-15 17:11:59
0
2
466

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的参数,可惜没有实例,我不清楚该如何使用。

ringa_lee
ringa_lee

ringa_lee

membalas semua (2)
仅有的幸福

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

$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了吗?

      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!