2014-06-20 41 views
0

我正在使用UI路由器,現在我想過濾數據使用PARAMS在URL(搜索部分的URL),無需重新加載狀態 - 我不需要問服務器每次我想找東西在收集。刷新狀態沒有刷新UI路由器

我的想法是聽事件$ routeChangeSuccess,採取所有的搜索參數和應用角度過濾器收集與他們。

我試圖做這樣的事情

<a ui-sref="invoices.issued({ invoice_type_id: invoiceType.id })" ui-sref-opts="{reload: false}">{{invoiceType.name}}</a> 

改變例如網址?invoice_type_id = 2但沒有任何成功的(狀態重裝)...

然後我寫了我自己的指令,其中監聽$ locationChangeStart並使用reloadOnSearch:false在狀態提供程序,但我覺得像一個重寫UI路由器功能(反應加載頁面設置一些參數,突出顯示行爲ive link等...)

所以我想問一下是否可以用ui-router?如果我做錯了什麼?或者有沒有一種完全不同的方法來實現過濾?

感謝Blazek

+0

我建議的routeParams設置一個變量,並且注入/使用,在你的過濾器,而不是重寫一堆模塊。 –

+0

謝謝,是的,我想這樣做,但我不太確定,因爲ui-sref選項在我的問題中描述的方式不起作用。我想避免再次下載整個集合,有數百條記錄,所以我想減少服務器的使用情況,並在客戶端過濾數據。 – blazek

+0

這聽起來像你想要的是創建一個過濾器/工廠,並注入你的搜索參數,把它傳回給控制器。我從來沒有這樣做過,但是這個資源可能會幫助https://egghead.io/search?q=filters –

回答

0

另一種選擇,以防止重定向到您的狀態:

$transitions.onBefore({}, function($transition$) { 
if ($transition$.$to().name === '[state name]') { 
    return false; 
} 
});