2013-03-06 50 views
1

我在一個表格中顯示數據,但是一些字段太長,導致它們的行太高,所以我創建了一個自定義綁定來關閉溢出和用省略號顯示違規字段。自定義綁定以改變點擊不起作用的樣式

a, b, c, d,... 

然後當用戶點擊該字段時,它將「取消隱藏」顯示該字段所有數據的數據。

雖然我的綁定工作不正常。我的目標是最初隱藏所有溢出,並在用戶單擊該字段時取消隱藏每個字段。

我的綁定是做相反的,有點。最初,它呈現字段未隱藏然後隱藏該字段,一旦用戶點擊它。但一旦發生初始點擊,該字段將不會再次切換。

My fiddle

我覺得我在這個思維有點...

更新

一旦點擊事件被觸發options.data的價值將永遠留什麼它最初改爲。如何將hideOverflow的當前版本作爲valueAccessor發送到click init函數?

回答

0

問題出現了,因爲newValueAccessor正在返回致電options.click而不是返回一個匿名函數,該函數調用options.click。我改變了這個...

這個...

var newValueAccessor = function() { 
    return function (data) { 
     options.click.call(viewModel, !data.hideOverflow()); 
    }; 
}; 

,它就像一個魅力

1

你想要切換你的hideOverflow可觀察,而不是將其設置爲傳遞到點擊綁定(數據本身,這是truthy)的值。

所以,你可以這樣做:

self.changeOverflow = function() { 
    self.hideOverflow(!self.hideOverflow()); 
}; 
+0

只要記住,更新綁定首先應用綁定時,將被觸發,這也許可以解釋爲什麼初始狀態會擴大。我認爲更新綁定不應該在init上被觸發,因爲正如名字所暗示的那樣,它只能在關聯的observable被更新時觸發。 – 2013-03-06 20:08:45

1

我已經更新了RP尼邁耶的解決方案您的一把小提琴,我對你的具體情況的解決方案。

http://jsfiddle.net/dzul1983/fT4dH/5/

我加了一個爆炸的15號線

options.data = !ko.utils.unwrapObservable(options.data); 

我想更新綁定是有點誤導,它也引發了初始化。

相關問題