Заполнить observable-fields-object теми же fields-names object

#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 .