#javascript #knockout.js
#javascript #knockout.js
Вопрос:
У меня есть объект, который все его поля являются наблюдаемыми (knockout.observable). У меня есть и другой обычный объект, чьи поля имеют те же имена, что и у first-object-fields. Я хочу вставить в каждое поле первого объекта значение поля соответствия во втором объекте.
Например:
var first = {
a:ko.observable(),
b:ko.observable()
};
var second= {
a:'my'
b:'fields';
};
Я хочу, чтобы первый объект выглядел как:
first = {
a:ko.observable('my'),
b:ko.observable('fields')
};
Да, конечно, я могу сделать это с помощью цикла ‘each’.
Но, мой вопрос в том:
Есть ли какая-либо встроенная функция, которая это делает?
Ответ №1:
Вы можете использовать ko.mapping
плагин:
var results = ko.mapping.fromJS(second, first);
Смотрите документацию
Комментарии:
1. Вы убедились, что
mapping
плагин вообще доступен?2. Может быть, на скрипке — это недоступно. Но в моем проекте — Это доступно.
3.
ko.mapping.fromJS
сам по себе не изменяетfirst
данные, он возвращает объединенные результаты, которые вы должны использовать в качестве модели представления. Кроме того, в более старых версиях Knockout плагин сопоставления может быть доступен вko.utils.mapping
.