angular.js - angular-ui-router的預先載入與控制器注入
ringa_lee
ringa_lee 2017-05-15 17:11:59
0
2
541

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

全部回覆(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了嗎?

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板