jquery
  • knockout.js
  • jquery-masonry
  • 2013-06-26 4 views 2 likes 
    2

    У меня есть шаблон нокаута привязки используется для привязки списка дивы к наблюдаемому массива:Обновить макет кладки после knockoutJS DataBound шаблона вставляется в контейнер

    <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 ed "в него обработчиком кликов, привязанным к функции модели представления.

    Компоновка элементов в контейнере .menu-instance-entries управляется masonry плагин и для того, чтобы ручной абсолютное позиционирование, чтобы иметь место, одну необходимость вызова $container.masonry('prepended', elements) прохождения коллекции элементов.

    Я контролирую точку, где наблюдаются наблюдаемые коллекции .push, но я понятия не имею, как получить элемент jQuery из вновь созданного шаблона div по шаблону, чтобы передать вызов jQuery для плагина масонства.

    Что нужно сделать, чтобы обновить макет с добавлением элемента нокаута через наблюдаемый массив?

    ответ

    1

    Вы можете использовать функции afterAdd или beforeRemove привязки шаблона, я советую против этого, потому что вы получаете зависимости от DOM из ViewModel.

    Лучше создавать пользовательские привязки, который обрабатывает взаимодействие между кладкой и KO

    +0

    мне нравится это предложение, и рассуждения позади него. Однако я немного отстаю от реализации. Я последовал примеру [здесь] (http://stackoverflow.com/questions/11031719/bindinghandler-in-knockoutjs-build-own-listview), с некоторыми трюками, конечно. Где в методе обновления я бы отрегулировал макет для правильного изменения размера. – BigDubb

     Смежные вопросы

    • Нет связанных вопросов^_^