2012-07-02 5 views
0

Я пытаюсь получить dropdownchecklist jQuery плагин, работающий с ko. Я подключил специальный обработчик привязки, но выпадающее меню не будет заполнено параметрами. Пожалуйста, проверьте мою скрипку: http://jsfiddle.net/amitava82/wMH8J/11/получение dropdownchecklist работает с knockoutJS

Цените свою помощь. Благодаря!

ответ

0

Это потому, что вы создаете выпадающее меню до связывание KnockoutJS. Как работает эта выпадающая группа? Он создает дополнительные divs и охватывает, которые копируют содержание и выбирают и создают красивый список. После этого применяются привязки, и они изменяют выбор (как следует), но выпадающий список не обновляется, потому что эта библиотека является статичной, то есть она копирует содержимое только только во время вызова.

Я обновил ваш jsFiddle, чтобы вы могли видеть временное исправление. Я имею в виду, что он работает сейчас, применяется привязка до создание раскрывающегося списка. Единственная проблема заключается в том, что изменение поля options в viewModel не повлияет на выпадающее меню. Что вам, вероятно, нужно сделать, это использовать subscribe method. Вы должны отслеживать изменения в поле options, и если они происходят, вам нужно воссоздать раскрывающийся список. По крайней мере, это легкий способ.

+0

Как правило, я обнаружил, что создание обложек привязки Knockout для различных jQuery-библиотек хорошо работает для нашего проекта. Они обычно довольно простые. – Svend

+0

Спасибо, ваше решение действительно решает проблему. Я определенно хотел бы узнать о методе обертки, о котором упоминал @Svend. Это поможет мне понять, как работать с разными плагинами JQuery с KO. Я отвечу на прием. – SamSerious

0

@freakish ответ будет работать для большинства статического контента, но для чего динамического с помощью шаблонов, например if или foreach переплетов, или вам необходимо поддерживать основные обновления данных, например, больше вариантов CheckBox «вдруг» становится доступными, он будет не работа.

Пример a really simple $.button bindingapply, который может быть использован для обертывания более простых вызовов jQuery. Это просто вопрос добавления дополнительных членов в controls, чтобы сделать их доступными в привязках.

Случай с JQuery Выпадающее Check List немного сложнее, однако, так как вы, очевидно, хотите использовать встроенный в options обработчик, но вам нужно запустить $.dropdownchecklist после options обработчик запуска, так как он создает DOM элементы, которые Jquery зависит от. By wrapping the built in options handler, мы всегда вызываем в правильном контексте.

В моем опыте использования (наш проект использует около 10-15 пользовательских привязок), вы будете в среднем около 10-20 строк фактического JS. Если вы начнете баллотироваться на +100 линий, я нахожу, что это хорошая идея для рефакторинга и переосмысления. Надеюсь, это поможет некоторым :-) Я использую Knockout в течение нескольких месяцев в основном проекте реализации пользовательского интерфейса на работе, я действительно многому научился, и я поражен этим.