我不确定哪种方法最适合我的方案,所以我先解释一下。
我有两个数据源。Persons and Groups,每个 Person-Item 都有一个指示符,表示它属于哪个组。人员绑定到剑道网格,组绑定到<ul>。我的问题是,我想在组之外显示一个计数,这表明该组中有多少人 - 此信息是根据人员数据源计算的,而不是组本身的一部分。
很抱歉这个一般性问题 - 但我真的在努力解决这个问题......
更新:这是我现在拥有的:
var contactGroupsDataSource = new kendo.data.DataSource({
transport: {
read: {
url: "api/contactgroups"
}
}
});
$('#contactGroupsList').kendoListView({
dataSource: contactGroupsDataSource,
template: "<li class='contactGroupListItem' data-number='${Number}'>${Number} ${Name} (<span data-bind="text: cgcount[1]"></span>) </li>"
});
viewModel = kendo.observable({
contactsDataSource: new kendo.data.DataSource({
transport: {
read: {
url: "api/contacts"
}
},
schema: {
model: {
id: "Id",
fields: {
id: { type: "string" },
FirstName: { type: "string" },
LastName: { type: "string" },
ContactGroupNumber: { type: "integer" }
}
}
},
change: function (e) {
var data = this.data();
for (var i = 0; i < data.length; i++) {
var cg = data[i]["ContactGroupNumber"];
viewModel.cgcount.splice([cg - 1], 1, viewModel.cgcount[cg - 1] + 1);
}
for (var i = 0; i < 7; i++) {
console.log(i + 1 + ': ' + viewModel.cgcount[i]);
}
}
}),
cgcount: new kendo.data.ObservableArray([0, 0, 0, 0, 0, 0, 0])
});
kendo.bind($("#contactsGroupContainer"), viewModel);
contactsListView = $('#contactsList').kendoGrid({
dataSource: viewModel.contactsDataSource,
sortable: true,
rowTemplate: kendo.template($("#rowTemplate").html())
});
丹尼尔