2016-01-20 91 views
0

Plunker Demo角UI路由器 - 從一個狀態到同一狀態Transistion不帶參數失敗

<script> 
    var myapp = angular.module('myapp', ["ui.router"]) 
    myapp.config(function($stateProvider, $urlRouterProvider) { 

     // For any unmatched url, send to /route1 
     $urlRouterProvider.otherwise("/dashboard") 

     $stateProvider 
     .state('dashboard', { 
      url: '/dashboard', 
      templateUrl: 'dashboard.html', 
      controller: 'MainCtrl' 

     }) 
     .state('verify', { 
      url: '/verify?email&code', 
      templateUrl: 'verify.html', 
      controller: 'verifyCtrl' 
     }) 
    }); 
    myapp.controller('MainCtrl', function($scope,$state) { 
     $scope.goTo = function() { 
     $state.go('verify',{'email':'[email protected]', 'code': {'name': 'test name'}}); 
     } 
    }) 
    myapp.controller('verifyCtrl', function($scope, $stateParams) { 
     $scope.email = $stateParams.email; 
     $scope.code = $stateParams.code.name; 
    }) 
    </script> 

當從使用參數相同的狀態轉換不帶參數的狀態導航,它不工作。

在演示點擊,然後再等鏈接「驗證不PARAMS」,「用電子郵件&代碼驗證」。它不會正確導航。

回答

1

狀態屬性通常在從一個狀態轉換到另一個狀態時繼承。如果它們沒有定義,則會導致參數也被複制。使用inherit=false會停止此操作。 要在ui-serf中使用此選項,我們有ui-sref-opts屬性。

Demo-Plunker

在HTML:

<a ui-sref="verify" ui-sref-opts="{inherit: false}">verify without params</a> 

在JS:

$state.go('verify',{},{inherit:false}); 
+0

不,這不是我的問題 我需要導航與paramater來聲明沒有參數,反之亦然「http://plnkr.co/edit/ID jxWhO1mP1bsDCyEBef?P =預覽」。看,你的角度不工作更新一個 –

+0

你能解釋一下你的意思是「與paramater在沒有參數」的說法時,使用您的信息頁的例子嗎?我的理解是,你要移動到狀態有或無PARAMS驗證。 – Raghu

+0

是的,當然 我在鏈接/狀態(活動) http://run.plnkr.co/Hk0zba9O2y3Js4rj/#/verify 如果我想改變到同一路段/狀態使用參數 HTTP: //run.plnkr.co/Hk0zba9O2y3Js4rj/#/[email protected] 它不更改視圖。 –