我已经对我的6个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()我得到未定义。
我做错了什么?
答案 0 :(得分:0)
您可以使用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);
};
请参阅实时示例here