2013-07-15 163 views
1

基因敲除是否可觀察到外部改變的值,如jQuery.active?我想在有活動的AJAX調用時創建加載動畫。基因敲除 - 觀察jQuery.active

+0

您可以爲該值創建自定義挖空綁定:http://knockoutjs.com/documentation/custom-bindings.html。不確定jQuery.active是什麼,所以不能爲您提供任何代碼! – CodingIntrigue

+0

'jQuery.active'是一些活動的AJAX請求。標準計算或自定義綁定不起作用,因爲'jQuery'自己設置值。基本上,我試圖訂閱「不可觀測」。 – Sljux

+1

開箱即用訂閱屬性(如active)會帶來一些挑戰,因爲它不是由Knockout設置的,並且在更改值時不會觸發回調。你可以不斷調查房地產,但這將是昂貴的。在不瞭解.active屬性的情況下,我首先想到的是分叉方法,添加一個類的調用,在那裏創建一個observable,然後你的訂閱會起作用,但是這超出了這個問題的上下文。 –

回答

1

我不認爲Knockout能夠做到這一點,沒有watching jQuery.active變量和/或添加許多代碼行。這似乎太複雜,只顯示加載動畫。

我會推薦使用jQuery做所有事情(顯示/隱藏動畫?)。

另一種解決方案是通過ko.observable布爾值在每個ajax請求之前和之後顯示/隱藏動畫,但是如果您從不同模型中做了許多不同的ajax請求,它將變得混亂。

+1

由於AJAX的異步特性,布爾型observable將不合適,所以我正在考慮訂閱兩個函數到'ajaxStart'和'ajaxStop'事件,增加/減少一個數字可觀察值,並顯示動畫,當這個數字> 0. – Sljux

+1

是的,但我正在考慮從成功回調更新的布爾值。我有時會使用它,但只有當您有一個特定的Ajax調用時纔有用,而不是用於全局解決方案。實際上,聽ajaxStart和ajaxStop似乎是一個很好的解決方案。 – mael