Как добавить новую строку в список, добавив в элемент предыдущей строки в KnockoutJs

45
5

Если у меня был шаблон в KnockoutJs, который является шаблоном foreach, когда я "нажимаю" следующий бит данных на наблюдаемый массив, показанный в сетке, как я могу гарантировать, что значение столбца является предыдущей строкой + 1.


например. (Упрощенный)


        Col1
Row 1 5 [ Add Button ]
Row 2 6 <-- auto populated (+1)

Модель (упрощенная):


viewModel = {
...
addRow: function() {
this.Rows.push ({ Col1:0 })
}
}

Мне как-то нужно получить доступ к предыдущей строке и нажать эти данные + 1, но когда я проверяю viewModel.Rows, нет счетчика или индексатора. Как получить доступ к этим данным?

спросил(а) 2011-03-30T16:55:00+04:00 8 лет, 8 месяцев назад
1
Решение
46

Вы должны сделать это, привязав вашу кнопку добавления к анонимной функции, которая передает текущее значение Col1.


Будет что-то вроде этого:


<script id="itemsTmpl" type="text/html">
<tr>
<td data-bind="text: id"></td>
<td>
<button data-bind="click: function() { viewModel.addItem(id); }">Add Item</button>
</td>
</tr>
</script>

С помощью функции addItem, например:

var viewModel = {
items: ko.observableArray([{id: 1}]),
addItem: function(previousId) {
this.items.push({
id: previousId + 1
});
}
};

Пример здесь: http://jsfiddle.net/rniemeyer/6gETk/


Это может быть не совсем то, что вам нужно для вашего приложения, но техника должна позволить вам передать необходимые данные в связанную функцию.

ответил(а) 2011-03-30T17:23:00+04:00 8 лет, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема