Использование отбрасывания для связывания изменений в 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)]
]
});