преобразовать массив в наблюдаемый массив

Есть ли способ преобразовать наблюдаемый массив в наблюдаемый?

Я спрашиваю об этом, потому что в моем коде есть одна функция, которая ожидает наблюдаемый массив, потому что функция использует ko.utils.arrayForEach

Я пробовал гуглить, но ничего не нашел.

Обновить

я проверил, что я передаю, используя var test = isObservable(item). не видно, что я передаю, потому что я получаю false в переменной test Это нормальный массив.

Итак, я хочу преобразовать массив в наблюдаемый массив


person James    schedule 26.04.2014    source источник
comment
Также в качестве примечания ko.utils.arrayForEach не требует наблюдаемого массива. Вы также можете просто сказать $.each вместо этого, если хотите   -  person PW Kad    schedule 26.04.2014


Ответы (2)


Этот вопрос не имеет для меня особого смысла, но вот -

Чтобы преобразовать массив в наблюдаемый массив, сделайте следующее:

var normalArray = ['1', '2']
normalArray = ko.observableArray(normalArray);
// normalArray is now an observableArray
person PW Kad    schedule 26.04.2014
comment
я получаю сообщение об ошибке. Аргумент, передаваемый при инициализации наблюдаемого массива, должен быть массивом, нулевым или неопределенным. - person James; 27.04.2014
comment
Вы уверены, что это массив? Похоже, что нет. - person PW Kad; 27.04.2014
comment
Когда я вижу в режиме отладки то, что я передаю, относится к типу анонимной функции объекта - person James; 27.04.2014
comment
Я думаю, что получаю объект json с этой частью Methods, EntityAspect, prototype. - person James; 27.04.2014

вы можете использовать преобразование обычного массива в наблюдаемый массив, используяko.observableArray()

var SimpleListModel = function(items) {
    this.items = ko.observableArray(items);
    this.itemToAdd = ko.observable("");
    this.addItem = function() {
        if (this.itemToAdd() != "") {
            this.items.push(this.itemToAdd()); // Adds the item. Writing to the "items" observableArray causes any associated UI to update.
            this.itemToAdd(""); // Clears the text box, because it's bound to the "itemToAdd" observable
        }
    }.bind(this);  // Ensure that "this" is always this view model
};

ko.applyBindings(new SimpleListModel(["Alpha", "Beta", "Gamma"]));

рабочий пример http://jsfiddle.net/rniemeyer/bxfXd/

person ExCode    schedule 26.04.2014