2017-03-01 78 views
1

入口點到我的應用程序是一個未知參數值的網址,例如:訪問初始參數值

http://www.host.com/key/25 

和我的簡化的配置是這樣的:

$stateProvider.state('home', { 
     url: "/key/:key", 
     component: 'home' 
}).state('sitenotice', { 
     url: "/sitenotice/", 
     component: 'sitenotice' 
}); 

我嘗試在用的index.html導航到「網站通知」,回到「主」:

<html ng-app="myApp"> 
    ... 
    <div ui-view></div> 

    <a ui-sref="sitenotice">site notice</a> 
    <a ui-sref="home">home</a> 
</html> 

它不起作用,因爲我沒有將鍵參數傳遞給「home」狀態。我不知道如何訪問初始值。或者它可以以某種方式被緩存?是否有可能只用ui-router做到這一點,我還沒有使用根控制器。

我使用角度1.5.8和角度路由器1.0.0-beta.3。

+1

後,您必須獲取參數(:鑰匙)從stateParams,你可以把它在根視鏡或通過它到下一個狀態。 – Pengyy

回答

0

我的解決方案是使用rootScope並在那裏存儲參數值。我還更新了angular-ui-router 1.0.0-rc.1。當離開「home」狀態時,$ rootScope.navKey獲取當前狀態參數值。

angular 
.module('myApp') 
.run(function ($rootScope, $stateParams, $transitions) { 
    $rootScope.navKey = ""; 

    $transitions.onExit({ exiting: 'home' }, function() { 
    if (angular.isDefined($stateParams.key)) { 
     $rootScope.navKey = $stateParams.key; 
    } 
    }); 
}); 

在我的index.html我用navKey回到「主」狀態:

<a ui-sref="home({ key: navKey })"> 
    <md-button md-no-ink="" class="md-primary">Home</md-button> 
</a>