[英]Using the browser to navigate back in an angularjs app with ui-router?
這是我的情況。
我怎樣才能使其正常工作,以便在我回擊時轉到使用原始搜索文本“ bob”顯示客戶搜索結果的頁面?
我看過這篇文章,但是我真的必須創建會話服務,狀態歷史記錄服務和狀態位置服務嗎? 似乎應該有一種更簡單的方法來使其起作用。 謝謝。
正確的答案是您需要根據搜索到的數據更改URL。 當您搜索“鮑勃”時,請更改URL以使其匹配: /customers?q=bob
並轉到處理該問題的路由(或僅使您的一條路由能夠處理可選的查詢參數)。 這使您可以使用瀏覽器的狀態處理程序,以便Back
到/customers?q=bob
時可以進行處理。
如果您不想以瀏覽器本機支持(url)的方式進行操作,則必須使用服務等手動進行操作,這很痛苦。
感謝Dan,我接受了您的建議,現在在URL中有了搜索參數。 這是現在的網址:
本地主機/#/ customers?searchText = test&pageSize = 25&pageNumber = 1
..這是我在ui-router中的更新狀態。 params部分設置默認值,如果URL參數與默認值匹配,則“擠壓” URL參數。
.state("app.customers", {
url: "/customers?searchText&pageSize&pageNumber",
params: {
searchText: { value: "", squash: true },
pageSize: { value: 25, squash: true },
pageNumber: { value: 1, squash: true }
},
controller: "customersController as vm",
templateUrl: "customers.html",
resolve: {
customerService: "customerService",
customers: function (customerService, $stateParams) {
if ($stateParams.searchText) {
return customerService.search($stateParams.searchText, parseInt($stateParams.pageSize), parseInt($stateParams.pageNumber));
} else {
//return empty array and default pager
return null;
}
},
}
})
..現在在用戶頁面上,當用戶單擊搜索按鈕時,我只需在控制器的search()方法中執行此操作。
$state.go("app.customers", { searchText: vm.searchText, pageSize: vm.pager.pageSize, pageNumber: pageNumber });
此ui-router的UrlMatcher文檔非常有幫助。 本文也很有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.