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

浏览:44日期:2022-12-23

问题描述

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

问题解答

回答1:

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

$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’});回答2:

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

相关文章: