2013-06-26 12 views
2

我有一個敲除模板結合用於結合的div列表到可觀察數組:刷新砌築佈局被插入到容器

<div class="menu-instance-entries js-masonry" data-masonry-options='{ "gutter": 20, "itemSelector": ".menu-entry" }' data-bind="template: { name: 'menu-entries-template', foreach: MenuEntries }"></div> 

MenuEntries是可觀察到的陣列得到一個新的元件「 push編輯「由綁定到視圖模型的函數的點擊處理程序。

.menu-instance-entries容器中元素的佈局由masonry插件控制,爲了進行手動絕對定位,需要調用$container.masonry('prepended', elements)傳遞元素集合。

我在可觀察集合'.push發生位置的控制點,但我不知道如何從模板的新創建的div中獲取jQuery元素以傳遞到jQuery調用masonry插件。

我應該怎麼做才能通過可觀察數組添加基於knockout元素的佈局更新?

回答

1

您可以使用模板綁定的afterAdd或beforeRemove函數,但是我建議您不要這樣做,因爲您從ViewModel獲得了對DOM的依賴關係。

最好創建一個處理磚石和KO

+0

我喜歡這個建議,並且它背後的原因之間的相互作用自定義綁定。不過,我在執行方面有點落後。我遵循給定的例子[這裏](http://stackoverflow.com/questions/11031719/bindinghandler-in-knockoutjs-build-own-listview),當然有一些調整。在更新方法中,我會調整佈局以適當調整大小。 – BigDubb