dojo如何在tabContainer中应用其他函数onClose事件?

时间:2014-08-01 10:55:43

标签: dojo w2ui

我正在研究Tabcontainer.dojo是一个用于onClose事件的方法将确认()。我不使用确认()我使用的w2confirm不适用。以各种方式尝试,但它没有奏效。请帮助我!

道场示例

 var closablePane = new ContentPane({
    title:"Close Me",
    closable: true,
    onClose: function(){
       // confirm() returns true or false, so return that.
       return confirm("Do you really want to Close this?");
    }
});

onCloseEx.addChild(closablePane);

我的代码

 function abc(){
                w2confirm("are you delete?",function btn(ans){
                    if(ans=="Yes"){
                        return true;//this.close();
                        //console.log(registry.byId(id));
                        //registry.byId(id).close();
                    }else{
                        return false;
                    }
                });
            }       

var tab = new dijit.layout.ContentPane({
                    title : name,
                    id : id,
                    content : content,
                    class : 'tab',
                    closable : true,
                    onClose : function() {
                        return abc();
                    }
                });

                var container = dijit.byId('tabContainer');
                container.addChild(tab);
                container.selectChild(tab);                                                                                                                                    

1 个答案:

答案 0 :(得分:1)

w2confirm没有有意义的返回值,因为它以异步方式运行(因此传递给它的回调),这意味着您的函数将在用户选择是或否之前返回。

看起来您已经尝试了一种不同的方法,这种方法在正确的轨道上,但ContentPanes没有close方法。但是,您可以执行的操作是指示父TabContainer删除子项,然后将其销毁。这是一种可行的方法:

var tab = new dijit.layout.ContentPane({
    ...
    onClose: function () {
        w2confirm("Are you sure you want to delete?", function (answer) {
            if (answer === "Yes") {
                tab.getParent().removeChild(tab);
                tab.destroyRecursive();
            }
        });
    }
});