问题 #1014💬 已回答提出于 2018年4月7日作者 tommedema1 个反应

让预览模式记住是否应该恢复可见性模式

快速解答作者 artf1

我很喜欢这个想法,那在“命令”级别跟踪所有指令状态怎么样?!?比如,在任何 'runCommand(CMDID)' 中,我们会把它存储在 'Commands.active' 对象里(例如 'active[CMDID] = 1'),然后在 'stopCommand' 上清除。然后我们需要用“Commands.isActive(CMDID)”方法来检查,可能还需要“Editor.isCommandActive(CMDID)”(作为代理方法)。我还想把“runCommand”/“stopCommand”逻辑从“Editor”中移到新的“Commands.run/stop”方法里(只是为了让它更有条理)。你怎么看?你能创造这样的公关吗?:)

阅读下方完整回答 ↓

问题

目前,当你启用预览模式后再关闭时,即使可见性模式已经关闭,它也会自动开启可见性模式。这确实挺让人烦恼的。

我想创建一个PR来解决这个问题,但也需要你的建议,因为我不太明白你用Backbone时该怎么正确操作。

在“commands/view/Preview.js”中,你的“停止”函数有以下逻辑:

<img width=“385” alt=“截图 2018-04-06 下午4:24:34” src=“https://user-images.githubusercontent.com/331833/38448138-05a23d7c-39b7-11e8-8ef2-418b429960b5.png”>

现在,第54行应该变成有条件的。大致是:

    if (editor.visibilityMode()) {
        editor.runCommand('sw-visibility');
    }

你会如何实现这个“可见模式”布尔值?这会是组件模型的一部分吗?

回答(3)

artf2018年4月9日

我很喜欢这个想法,那在“命令”级别跟踪所有指令状态怎么样?!?比如,在任何 'runCommand(CMDID)' 中,我们会把它存储在 'Commands.active' 对象里(例如 'active[CMDID] = 1'),然后在 'stopCommand' 上清除。然后我们需要用“Commands.isActive(CMDID)”方法来检查,可能还需要“Editor.isCommandActive(CMDID)”(作为代理方法)。我还想把“runCommand”/“stopCommand”逻辑从“Editor”中移到新的“Commands.run/stop”方法里(只是为了让它更有条...

tommedema2018年4月9日

@artf如果我能在途中在这里提问,我大概能做到。我还在适应《Backbone》。你会把那个“命令”对象放哪里?

你能详细说说吗?

我还想把 runCommand/stopCommand 逻辑从 Editor 里移到新的 Commands.run/stop 方法里(这样会更有条理)。

artf2018年4月14日

这里的“命令”是指[命令模块](https://github.com/artf/grapesjs/blob/dev/src/commands/index.js)你能详细说说吗? 例如,我想把[这个“Editor. runCommand ”逻辑](https://github.com/artf/grapesjs/blob/dev/src/editor/index.js#L437-L443)移到[Commands module](https://github.com/artf/grapesjs/blob/dev/src/commands/index.js)里,这样在“Editor”里我们会得到:...

相关问答

通过相似的问题讨论继续研究。

与此问题匹配的付费插件

根据问题关键词和标签相关性精选,助你更快交付。

查看全部插件

正在加载付费插件推荐……

免费方案

在以下平台查看开源 GrapesJS 插件: GitHub 或在我们的免费目录中快速搜索。

浏览免费插件 →
高级方案

高级插件提供支持、定期更新和生产就绪的功能——为你节省数天的集成工作。

浏览高级插件 →

相关教程

关于同一主题的深入指南。

全部教程 →

浏览插件分类

直接跳转到市场上的插件分类页面。