Я использовал данные jquery dataTable в knockout.js.In, что я генерирую строки данных из функции с удалением ссылки. Он будет удалять таблицу форм строки, а также вид наблюдаемого массива. Удаление ссылки работает один раз и удалите строку из таблицы, но когда я пытаюсь удалить другую, они не удаляют ее.пользовательская привязка ko для таблиц данных jquery
Здесь вы можете проверить http://jsfiddle.net/zongweil/PLUKv/1/
$(document).ready(function() {
/* Custom binding */
ko.bindingHandlers.dataTable = {
init: function (element, valueAccessor) {
var binding = ko.utils.unwrapObservable(valueAccessor());
// If the binding is an object with an options field,
// initialise the dataTable with those options.
if (binding.options) {
$(element).dataTable(binding.options);
}
},
update: function (element, valueAccessor) {
var binding = ko.utils.unwrapObservable(valueAccessor());
// If the binding isn't an object, turn it into one.
if (!binding.data) {
binding = {
data: valueAccessor()
};
}
// Clear table
$(element).dataTable().fnClearTable();
// Rebuild table from data source specified in binding
$(element).dataTable().fnAddData(binding.data());
}
};
/* Object code */
function GroupMember(id, name, isGroupLeader) {
var self = this;
self.id = id;
self.name = name;
self.isGroupLeader = ko.observable(isGroupLeader);
self.link = ko.computed(function() {
return "/#user/" + self.id;
});
self.nameWithLink = ko.computed(function() {
return '<a href="' + self.link() + '">' + self.name + '</a>';
});
self.actions = ko.computed(function() {
return '<a class="btn btn-danger" data-bind="click: function() {removeMember(' + self.id + ')}">' + '<i class="icon-minus-sign"></i>' + '</a>';
});
}
/* View model */
var groupViewModel = {
groupMembers: ko.observableArray([
new GroupMember("1", "Abe", true),
new GroupMember("2", "Bob", false),
new GroupMember("3", "Bill", false)])
};
groupViewModel.membersTable = ko.computed(function() {
var self = this;
var final_array = new Array();
for (var i = 0; i < self.groupMembers().length; i++) {
var row_array = new Array();
row_array[0] = self.groupMembers()[i].nameWithLink();
row_array[1] = self.groupMembers()[i].actions();
final_array.push(row_array);
}
return final_array;
}, groupViewModel);
groupViewModel.removeMember = function (id) {
var self = this;
self.groupMembers.remove(function (groupMember) {
return groupMember.id == id;
});
};
ko.applyBindings(groupViewModel);
});
Похоже, дубликат вашей ранее вопрос: [knouckout JS и таблицы JQuery данных] (http://stackoverflow.com/questions/37230475/knouckout-js- и-JQuery-данных таблицы)? Обратите внимание, что вы можете улучшить свой исходный вопрос, отредактировав его, что поместит его в очередь для повторного открытия. – Jeroen
Вот [плагин] (http://jmvtrinidad.github.io/knockout-datagrid/), который можно использовать для управления таблицей. – janmvtrinidad