Множественное связывание данных в нокауте js
У меня есть две текстовые свойства Date и City являются наблюдаемыми.
Мне нужно объединить две данные свойств текста в одном div.
и применять отдельный стиль для обоих текстов.
В текущем сценарии используется свойство knockoutjs data-bind:
<div class="date" data-bind="text:Date" />
<div class="city" data-bind="text:City" />
Ожидается
:
<div class="date city" data-bind=" text:Date text:City" />
Вывод: 2013-05-24 Нью-Йорк
Пожалуйста, расскажите мне, как это сделать.
Ответы
Ответ 1
Вы не можете использовать два одинаковых привязки для элемента. Вместо этого вы должны создать вычисленный формат, который форматирует текст, используя два значения, которые вы хотите отобразить.
Например (Предполагая, что ваша дата и город являются наблюдаемыми):
viewModel.DateCity = ko.computed(function() {
return viewModel.Date() + " - " + viewModel.City();
});
Затем в вашей привязке данных вы просто привязываетесь к вычисленному.
<div class="date city" data-bind="text:DateCity" />
Другим вариантом является объединение значений в привязке напрямую.
<div class="date city" data-bind="text: Date() + ' - ' + City()" />
Лично я считаю, что расчетный подход - это более чистый путь.
Ответ 2
Вы можете просто написать: -
data-bind = "text: Date() + City()"
И если вы хотите добавить любую строку ex: - 2013-05-24: New York, вы можете указать как:
data-bind = "text: Date() + ':' + City()"
Таким образом, это сработало для меня.
Ответ 3
Чтобы использовать отдельные стили для каждой части, вам понадобятся отдельные HTML-элементы для прикрепления этих стилей. Использование span
для каждой части будет работать.
<div>
<span class="date" data-bind="text:Date"></span>
<span class="city" data-bind="text:City" ></span>
</div>
Ответ 4
вы могли бы добавить 2 промежутка или называть это следующим образом
<div class="date" data-bind="text:Date() +' '+ city()" />
Ответ 5
С ko.punches вы могли бы сделать
<div class='date city'>{{ Date() }} {{ City }}</div>
Еще один вариант с отличным плагином.
Ответ 6
используйте знак "," или "+", чтобы выполнить множественную привязку данных.
<div class="date city" data-bind=" text:Date(), text: City" />
<div class="date city" data-bind=" text:Date() + City" />
Ответ 7
Попробуйте использовать этот формат:
data-bind="text: city() + ', ' + state() + ' ' + zipcode()"