ненавязчивый нокаут без загрязнения домом - PullRequest
6 голосов
/ 21 февраля 2012

Существуют ли какие-нибудь плагины "ненавязчивого нокаута", которые не вводят атрибут привязки данных к элементам домена? Я пробовал несколько как: http://userinexperience.com/?p=633 и плагин Jquery.

Проблема со всеми из них состоит в том, что они продолжают вводить привязку данных обратно в дом. Есть ли какой-нибудь другой плагин, который может сделать что-то более похожее на размещение привязки данных в эксплоенте, например http://docs.jquery.com/Data

Ответы [ 3 ]

5 голосов
/ 22 февраля 2012

нокаут.Ненавязчивый плагин был моей первоначальной попыткой отойти от атрибутов data-bind, и когда я создавал его, добавление элементов модели привязки обратно в DOM было почти единственным разумным способом сделать это.

Как указывает Райан выше, Knockout 2.0 позволяет создавать провайдеров пользовательских привязок, которые заменяют атрибуты data-bind на выбранную вами стратегию.Таким образом, в настоящее время я обновляю свой плагин для предоставления одного из этих провайдеров, что исключит любую запись в DOM во время выполнения.Вы можете проверить мой прогресс в ветке ko-v2 здесь .Дайте мне знать, если у вас есть какие-либо комментарии или предложения.И будьте осторожны, я просто начинаю, так что ничего не работает, но у меня должен быть другой коммит или два, чтобы поделиться на следующий день или около того.


2-28-12 Обновление

Я добавил несколько дополнительных тестов и функций в ветку выше.Текущий функционал является базовым, но на данный момент соответствует вашему требованию обойти привязку данных.

Дайте мне знать, что вы думаете.Это может в конечном итоге оказаться в новом проекте (с выключением Knockout.Unobtrusive)

3 голосов
/ 21 февраля 2012

Вот статья, в которой показано, как создать свой собственный поставщик привязки: http://www.knockmeout.net/2011/09/ko-13-preview-part-2-custom-binding.html.

Было бы достаточно легко создать настраиваемый поставщик привязки, который сохраняет / загружает свои данные из любого jQuery.$ .data или как свойство expando (можно использовать ko.utils.domData.get / set).

Поставщику привязок просто нужно реализовать функции nodeHasBindings и getBindings.

Если вам понадобится дополнительная помощь для реализации чего-то подобного, сообщите мне.

1 голос
/ 16 июля 2012

Извините, что снова открыл старый вопрос, но я искал что-то подобное и не мог найти что-то достаточно гибкое для наших нужд. Потребовалось всего около 30 минут, чтобы написать свою собственную, вот то, что я придумал.

...