Использование отбрасывания для связывания изменений в 2d массиве - Uncaught Observable: ключ отсутствует

Я пытаюсь использовать knockbackjs (knockoutjs + backbonejs), где модель представляет собой 2d-массив), т. Е. Таблицу, и viewModel привязывается с помощью foreach к HTML-тегу таблицы, поэтому я получу наблюдаемую таблицу, каждый щелчок по ячейке будет отправлять весь 2d массив к API.

Я смотрел на эти и другие примеры с вопросом, который я задал, и получил что-то вроде этого:

    //model
    var GameModel = Backbone.Model.extend({ urlRoot: '/game' });

    //viewmodel
    var GameViewModel = function (game) {

        this.board = kb.observable(game, [
                         [ko.observable(0), ko.observable(0), ko.observable(0)],
                         [ko.observable(0), ko.observable(0), ko.observable(0)],
                         [ko.observable(0), ko.observable(0), ko.observable(0)]
                     ]);
    };

    var model = new GameModel({ id: 1 });
    var gameViewModel = new GameViewModel(model);
    ko.applyBindings(gameViewModel);

но я получаю "Uncaught Observable: ключ отсутствует" в строке, начинающейся с

this.board = kb.observable(game, [

Как я могу это исправить? Есть ли лучший способ добиться этого?

1 ответ

Я бы подумал, что вам нужно отправить объект в наблюдаемую область, тогда как вы просто отправляете список параметров.

Вам нужно либо просто отправить массив, либо сделать его объектом, например:

this.board = kb.observable(
{
    'game': game,
    'board': [
        [ko.observable(0), ko.observable(0), ko.observable(0)],
        [ko.observable(0), ko.observable(0), ko.observable(0)],
        [ko.observable(0), ko.observable(0), ko.observable(0)]
    ]
});
Другие вопросы по тегам