我的支架底部面板不起作用

My brackets bottom panel doesn't work

我尝试做一个 Brackets 扩展(网络编辑器),我必须创建一个底部面板,但它从未出现, show 方法什么也不做,setVisible 也一样, 你能告诉我为什么吗?谢谢...

define (require, exports, module)->
    log = (s)->
        console.log "%c[SQL-DISPLAY] " + s, "color:#f4aa05;font-size:large"
    log "started..."
    commandManager      = brackets.getModule "command/CommandManager"
    menus               = brackets.getModule "command/Menus"
    appInit             = brackets.getModule "utils/AppInit"
    dialogs             = brackets.getModule "widgets/Dialogs"
    defaultDialogs      = brackets.getModule "widgets/DefaultDialogs"
    workspaceManager    = brackets.getModule "view/WorkspaceManager"

    sql_display_execute = 'sql-display.execute' # mon entrée dans le menu
    panel = {}


    appInit.appReady ()->
        commandManager.register 'sql-display panel', sql_display_execute, handleSqlDisplay
        menu = menus.getMenu menus.AppMenuBar.VIEW_MENU
        menu.addMenuItem sql_display_execute

        panel = workspaceManager.createBottomPanel 'sql.display.execute', $(require('text!templates/panel.html')), 400

    handleSqlDisplay = ()->

        log "disp modal box"
        console.log panel

        console.log panel.isVisible() #always false
        # affiche une modal
        #dialogs.showModalDialog defaultDialogs.DIALOG_ID_INFO, "database informations", "<p>test</p>"
        if panel.isVisible()
            #panel.setVisible(false)
            panel.hide()
            commandManager.get(sql_display_execute).setChecked(false)
        else
            panel.show()
            console.log 'try to show'
            #panel.setVisible(true)
            commandManager.get(sql_display_execute).setChecked(true)

            while( !panel.isVisible)
                panel.show()

        console.log panel.isVisible()#always false

不确定这是否是您的真正问题,但此代码永远不会 运行:

        while( !panel.isVisible)
            panel.show()

panel.isVisible 将始终计算为真,因为 isVisible 是一个函数。您需要括号才能实际调用该函数;它们对于零参数函数不是可选的。

OK我的问题解决了,不加载样式表无法打开底部^^

extensionUtils = brackets.getModule "utils/ExtensionUtils"
extensionUtils.loadStyleSheet(module, "main.css");

有了这个,就可以了...

似乎 WorkspaceManager.createBottomPanel 中 $panel 参数中的 html 需要 DOM id 才能使函数正常工作。

panel = WorkspaceManager.createBottomPanel(ID_OF_EXECUTE, $("<div id='some-id' class='bottom-panel'>HTML for my panel</div>"),200);

Brackets -WorkspaceManager (click show code)