Когда требуется Knockoutjs пользовательская привязка
Пытаясь узнать, Knockoutjs.i нашел код, связанный с пользовательским связыванием Knockoutjs, но это не очень хорошо.
<input data-bind="value: name" />
<hr/>
<div data-bind="fadeInText: name"></div>
ko.bindingHandlers.fadeInText = {
update: function(element, valueAccessor) {
$(element).hide();
ko.bindingHandlers.text.update(element, valueAccessor);
$(element).fadeIn();
}
};
var viewModel = {
name: ko.observable("Bob")
};
ko.applyBindings(viewModel);
я просто не понимаю, когда люди идут на кастом привязку?
1) если возможно, скажите мне несколько ситуаций, когда выборочная привязка будет вариант?
2) если кто-то увидит код, он сможет понять пользовательскую привязку fadeInText и viewModel не имеет никакого отношения, но все же он работает. как?
3) если бы существовала модель с несколькими представлениями, как я могу указать имя модели представления с именем привязки во время привязки?
Ссылка jsfiddle приведенного выше кода http://jsfiddle.net/rniemeyer/SmkpZ/
4) как добиться того же вывода без пользовательской привязки? было ли это возможно?
пожалуйста, ответьте на мой вопрос по смыслу. Спасибо
1 ответ
Вот несколько ответов:
Пользовательские привязки полезны во многих сценариях и, на мой взгляд, не должны использоваться в качестве последнего средства. В любое время, когда вы хотите соединить вашу DOM и данные способом, который еще не поддерживается встроенными привязками, тогда они являются хорошим вариантом. Как я перечислил выше, вот статья, которая могла бы помочь прояснить.
Пользовательская привязка косвенно связана с моделью представления, вызывая
ko.bindingHandlers.text.update
, Таким образом, это эффективноtext
связывание.text
связывание читает переданное значение и отображает.Для моделей с несколькими представлениями этот ответ описывает некоторые варианты обработки моделей с несколькими представлениями.
Без настраиваемой привязки вы можете не использовать jQuery и использовать CSS (с учетом поддержки браузера и префиксов). Например, вы можете сразу добавить класс к элементу, например:
С CSS, как:
.message {
opacity: 0;
transition: opacity 2s ease-in;
}
.load {
opacity: 1;
}
Элемент будет начинаться с opacity: 0
и сразу же перейти к opacity: 1
более 2 секунд.
Я бы не рекомендовал использовать jQuery непосредственно в вашей модели представления. Настраиваемые привязки являются инструментом, доступным вам для этих сценариев, и предоставляют большую часть возможностей, которые предоставляет Knockout.
Надеюсь это поможет.