【问题标题】:call parent widget function from inside dijit checkbox change function lopcated inside dgrid从 dgrid 内部的 dijit 复选框更改函数调用父小部件函数
【发布时间】:2017-12-20 22:49:50
【问题描述】:

我在按需网格中有一个 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 函数的引用?

谢谢

皮特

【问题讨论】:

    标签: javascript dojo dgrid


    【解决方案1】:

    我找到了一种解决方法,但可能不是最佳解决方案。在 postCreate 事件中,我定义了一个引用小部件的全局变量,然后使用该变量从复选框的更改事件中调用函数

    【讨论】:

    • 我遵循同样的方法
    【解决方案2】:

    我建议你使用dojo/topic 来获得你想要的东西。

    on(cbox, "change", function (evt) {
        var Staff = "No";
        if (evt == true) {//check box is checked, flag ticket as checked out
            Staff = cookie("LoggedInAs")
        }
    
        topic.publish("CheckOutTicket", Staff);
    });
    

    在您的父窗口小部件中的某个地方,例如在 postCreate 中

    this.own(topic.subscribe("CheckOutTicket", this.CheckOutTicket));
    

    现在您不必关心将处理程序从父小部件传递到子小部件并使用全局变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 2012-03-09
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多