2015-08-27 32 views
0

在我的導航HTML stateparams我有一個搜索框:

<div class="input-group custom-search-form"> 
    <input type="text" class="form-control" ng-model="vm.q" placeholder="Search..."> 
    <span class="input-group-btn"> 
     <button class="btn btn-default" type="button" ng-click="vm.search()"> 
      <i class="fa fa-search"></i> 
     </button> 
    </span> 
</div> 

在我的導航控制器,I處理按鈕點擊:

function search() { 
    $state.go("search", { q: vm.q}); 
} 

UI路由器有這條路線:

.state("search", { 
    url: "/search?:q", 
    templateUrl: "/app/search/search.html", 
    controller: "search", 
    controllerAs: "vm" 
}) 

在我search控制器,該所有工作正常,我可以用這個:

vm.searchQuery = $stateParams.q; 

現在,如果我打開瀏覽器,然後導航至/search?q=test,那麼我想什麼是在查詢字符串參數來填充搜索框。我還以爲這是簡單地改變導航控制器下面的情況:

vm.q = $stateParams.q; 
function search() { 
    $state.go("search", { q: vm.searchQuery}); 
} 

$stateParams是空的:{}

什麼是缺失/錯誤?

回答

0

如果您html5Mode需要追加/#!/後您的PARAMS不使用所以也許你需要嘗試這個網址:/search/!#/?q=test正確地得到$stateParams

+0

我不認爲這是因爲'state.go'正確生成url(使用html5Mode) - 只是stateParams不能在不同的控制器中訪問,即不是UI路由控制器。 – Sean