我在一个ondemand网格中有一个dijit表单复选框。Ondemand网格是一个dojo小部件的一部分。我想在复选框的on change事件中调用小部件中的一个函数,但是我似乎无法获得对小部件的引用。下面是我的代码:
TicketUnMarkedSet: function (GridData) {
//set the unmarked ticket information
gridStore = new Memory({ data: GridData, idProperty: "ID" });
grid = new (declare([OnDemandGrid, DijitRegistry]))({
store: gridStore,
columns: {
CheckedOut: {
label: "CO",
renderCell: function (object, cell) {
var CO = true; // check the checked out check box based on data from db
if (object.CheckedOut == "No") {
CO = false;
}
var cellContent = domConstruct.create("div", {});
var cbox = new CheckBox({
checked: CO,
name: "idBox"
});
cbox.placeAt(cellContent);
on(cbox, "change", function (evt) {
var Staff = "No";
if (evt == true) {//check box is checked, flag ticket as checked out
Staff = cookie("LoggedInAs")
}
this.CheckOutTicket(Staff);//how to call CheckOutTicket function (this is the checkbox)
});
return cellContent;
}
},
..more columns
},
CheckOutTicket: function (Staff){
alert(Staff);
}
我怎样才能获得CheckOutTicket函数的引用?
谢啦,谢啦
皮特
2条答案
按热度按时间idfiyjo81#
我找到了一个变通方法,但可能不是最好的解决方案:在postCreateEvent上,我定义了一个引用小部件的全局变量,然后使用该变量从复选框的change事件内部调用函数
zqdjd7g92#
我建议您使用dojo/topic来获得所需的内容。
在父小部件中的某个位置,例如postCreate中
现在,您不必关心从父小部件到子小部件的处理程序传递,也不必使用全局变量。