我正在使用knockout-kendo.js将knockout.js绑定到kendo网格。如果你绑定对象的第一级属性,那么它工作正常。 以下是一个示例 - http://jsfiddle.net/rniemeyer/jZtg5/
在上面的示例中,item属性在viewmodel中定义(即ViewModel.Items)
但是如果使用object的第二级属性将其绑定到kendo网格,则它不起作用。以下是绑定不起作用的示例 - http://jsfiddle.net/thakkar/QhF2W/3/
在此示例中,items属性未在viewmodel中直接定义。相反,它是在viewmodel中使用的对象的属性。 (即ViewModel.obj.Items)
var Item = function(id, name, type) {
this.id = id;
this.name = ko.observable(name);
this.type = type;
};
var vm2 = function() {
this.items = ko.observableArray([
new Item(1, "one", "a"),
new Item(2, "two", "b"),
new Item(3, "three", "a")
]);
var ViewModel = function() {
this.obj = ko.observable(new vm2())
};
ko.applyBindings(new ViewModel());
答案 0 :(得分:3)
这是一个更新的固定小提琴:
http://jsfiddle.net/DianaNassar/z439C/2/
基本上,你错过了大括号[你有一个控制台错误]。但最重要的是,如果你想向下钻取两个级别,你必须像这样绑定网格:
kendoGrid: {data:obj().items(),scrollable: false,columns: [
{ field: 'id', title: 'id', width: 150 },
{ field: 'name', title: 'name' },
{ field: 'type', title: 'type' }
] } "
不
kendoGrid: {data:obj.items,scrollable: false,columns: [
{ field: 'id', title: 'id', width: 150 },
{ field: 'name', title: 'name' },
{ field: 'type', title: 'type' }
] } "
Knockout observables是函数,你可以通过将新值作为参数传递给函数来设置它们的值,并通过不传递参数来读取它。
我希望这会有所帮助。