如何根据选项卡中数据的状态阻止 dijit.layout.TabContainer 切换选项卡?

发布于 2024-09-24 14:12:13 字数 120 浏览 1 评论 0 原文

我知道如何禁用选项卡等。

这是为了在用户未满足条件时防止 onclick 事件切换到活动选项卡。

是否有一个我可以连接到的函数将向我传递一个我可以使用 dojo.stopEvent() 的事件?

I know how to disable tabs, etc.

This is about preventing an onclick event from switching to an active tab, if the user hasn't met a condition.

Is there a function that I can connect to that will pass me an event I can use dojo.stopEvent() on?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

顾北清歌寒 2024-10-01 14:12:13

您也可以使用方面来做到这一点。

aspect.around(tabContainer, "selectChild", function(selectChild) {
        return function(page) {
            if(confirm("Do you want to change tab?"))
                selectChild.apply(this, arguments);
        }
});

小提琴:http://jsfiddle.net/vmsuu/4/

感谢 Fredde:http://dojo-toolkit .33424.n3.nabble.com/dijit-layout-TabContainer-Confirm-message-on-switching-tabs-td3990778.html

You can also do this with aspect.

aspect.around(tabContainer, "selectChild", function(selectChild) {
        return function(page) {
            if(confirm("Do you want to change tab?"))
                selectChild.apply(this, arguments);
        }
});

Fiddle: http://jsfiddle.net/vmsuu/4/

Credit to Fredde: http://dojo-toolkit.33424.n3.nabble.com/dijit-layout-TabContainer-Confirm-message-on-switching-tabs-td3990778.html

彻夜缠绵 2024-10-01 14:12:13

我有同样的问题,没有直接的方法来做到这一点,但你可以扩展你的小部件:


dojo.extend(dijit.layout.TabController, {
    onButtonClick: function(/*dijit._Widget*/ page,evt) {
        // summary:
        //      Called whenever one of my child buttons is pressed in an attempt to select a page
        // tags:
        //      private
        this.beforeButtonClick(page,evt);
        this._onButtonClick(page,evt);

    },
    beforeButtonClick:function(page,evt){

    },
    _onButtonClick:function(page,evt){
        console.log(evt.cancelBubble);
        if(evt.cancelBubble){
            return;
        }
        var container = dijit.byId(this.containerId);
        container.selectChild(page);
    }
});

用法是:


var widget = dijit.byId('your_tabContainer');
dojo.connect(widget.tablist,"beforeButtonClick",function(page,evt){
//do the detection, if it meet the condition, ignore it,
//if not, stop the event
   if(page.id !== "tab1"){
      dojo.stopEvent(evt)
   }
});

I have the same problem, there is no direct way to do it, but you can extend your widget:


dojo.extend(dijit.layout.TabController, {
    onButtonClick: function(/*dijit._Widget*/ page,evt) {
        // summary:
        //      Called whenever one of my child buttons is pressed in an attempt to select a page
        // tags:
        //      private
        this.beforeButtonClick(page,evt);
        this._onButtonClick(page,evt);

    },
    beforeButtonClick:function(page,evt){

    },
    _onButtonClick:function(page,evt){
        console.log(evt.cancelBubble);
        if(evt.cancelBubble){
            return;
        }
        var container = dijit.byId(this.containerId);
        container.selectChild(page);
    }
});

the usage is:


var widget = dijit.byId('your_tabContainer');
dojo.connect(widget.tablist,"beforeButtonClick",function(page,evt){
//do the detection, if it meet the condition, ignore it,
//if not, stop the event
   if(page.id !== "tab1"){
      dojo.stopEvent(evt)
   }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文