0

我傳遞使用$state->data
的信息。例如:如何在視圖顯示給用戶之前從angularjs中的自定義指令中獲取信息?

angular 
    .module('myapp', [...]) 
    .config(function ($stateProvider, $urlRouterProvider) { 

     $urlRouterProvider.otherwise('/account'); 

     $stateProvider 
      .state('account', { 
       abstract: true, 
       url: '/account', 
       templateUrl: 'index.html' 
      }) 
      .state('menu', { 
       abstract: true, 
       url: '/menu', 
       templateUrl: 'views/nav/menu.html' 
      }) 
      .state('menu.main', { 
       url: '/main', 
       data: { 
        role: ['user', 'merchant'], 
        mode: 'online' 
       }, 
       views: { 
        'menuContent': { 
         templateUrl: 'views/dash/dash.main.html' 
        } 
       } 
      }) 
      . 
      . 
      .   
     ; 
    }) 

和驗證通過$stateChangeStart

$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) { 
    console.log(toState); 
    console.log(toState.data); 
});  

enter image description here

各的看法,但我認爲信息(如角色和模式)必須從視圖中取而不是從$state->data。我想是這樣的:

views/dash/dash.main.html 

<ion-view title="Dashboard" hide-back-button="true" myapp-role="user,merchant" myapp-mode="online" myapp-security="true"> 
    <ion-content has-header="true" padding="false"> 

    </ion-content> 
</ion-view> 

而且能夠在view之前得到myapp-role, myapp-mode, myapp-security值顯示給用戶。 我該如何做到這一點?還有一個問題,這是一個好方法嗎?

+0

我會使用UI路由器解析功能。指定您希望在顯示視圖之前解析用戶。這樣,角色在呈現視圖之前可用。請參閱http://www.jvandemo.com/how-to-resolve-angularjs-resources-with-ui-router/ – grimurd 2014-09-25 02:13:11

+0

我可以在'resolve'中獲得自定義指令值嗎? – fiberOptics 2014-09-25 03:09:44

+0

如果您從指令中檢索值,則不。該指令在視圖呈現之前不會被初始化。但是,如果可能的話,我寧願把你需要的數據從指令中解析出來,這樣指令和視圖/控制器都可以立即使用它。 – grimurd 2014-09-25 21:50:09

回答

相關問題