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
是空的:{}
。
什麼是缺失/錯誤?
我不認爲這是因爲'state.go'正確生成url(使用html5Mode) - 只是stateParams不能在不同的控制器中訪問,即不是UI路由控制器。 – Sean