我的六个Angular-Kendo-UI网格问题都没有得到任何回应,所以我要交叉手指,希望我的问题能得到更普遍的解决。也许有一种更简单的方法来操作网格项。
我想访问包含我的数据的对象(在本例中是订单项)。
我的网格行有一个选择订单的复选框。当用户选择一个订单时,我想检索并操作该对象。
// dataSource
vm.masterGrid.dataSource = new kendo.data.DataSource({
transport:{
read: function(options) {
return vm.getOrders(options);
}
},
pageSize: 5,
serverPaging: true,
});
//options
vm.masterGrid.gridOptions = {
columns: [
{ title: "Buyer", field: "BuyerName" },
{
title: "Select",
template: "<input " +
type='checkbox' " +
class='checkbox' " +
ng-disabled='#=!HasValidCustomsInfo#' " +
ng-click='ordersVm.selectForPackaging(Id)' " +
ng-model='Id'/>"
}
]
};
视图: <div
kendo-grid
k-height="'400px'"
k-data-source="ordersVm.masterGrid.dataSource"
k-options="ordersVm.masterGrid.gridOptions">
</div>
这里是我试图获取对象的地方,这样我就可以对它做一些事情了:
// checkbox-click on row
vm.selectForPackaging = function (orderId) {
console.log(orderId); // returns true (useless)
console.log(vm.getOrderItemById(99)); // returns [init: {my actual object which I can't access}]
};
(我的get-order-item-by-id辅助函数:)
vm.getOrderItemById = function (orderId) {
var matches = $filter('filter')( vm.masterGrid.dataSource.data(), function(gridItem, index) {
return gridItem.Id == orderId;
});
};
我在vm中得到什么。selectForPackaging实际上包含我的数据,但它是不可用的!
在控制台中是这样的:
v init {_events: Object, _handlers: Object, OrderLines: init[1], Store: init, Id: 99…}
AddressIsValid:true
BuyerEmail:"lance.slack@gmail.com"
etc...
这很好,但是我无法获得数据!
调用 vm.getOrderItemById(99)。init应该返回实际的对象。而是返回一个函数:
function (e){var t,n,i=this,r=function(){return i};we.fn.init.call(this),this._handlers={};for(n in e)t=e[n],"object"==typeof t&&t&&!t.getTime&&"_"!=n.charAt(0)&&(t=i.wrap(t,n,r)),i[n]=t;i.uid=_e.guid…
如果我调用这个函数:vm.getOrderItemById(99).init()我得到undefined
我做错了什么?
您可以使用dataItem
方法获取当前行信息
// checkbox-click on row
vm.selectForPackaging = function () {
var row = $(this).closest("tr"),
var grid = $(vm.masterGrid).data("kendoGrid"),
var dataItem = grid.dataItem(row);
console.log(dataItem);
};
请参考这里的实际示例