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
的参数,可惜没有实例,我不清楚该如何使用。
问题解决了,其实方法很简单 - -
'//这里获得数据'。。。。你return promise了吗?