如何将自定义上下文菜单添加到 Vexi 中的文本区域?
How to add a custom context menu to a textarea in Vexi?
我想在 Vexi 应用程序的上下文菜单中添加自定义条目。
我尝试添加一个 contextActions
函数,但它抛出一个错误:
<textarea>
thisbox.contextmenu.contextActions = function() {
return [{
text: "Foo",
action: function(v) { cascade = v; vexi.log.info("foo"); },
enabled: enabled
}]);
}
</textarea>
我该怎么做?
要以可重复使用的方式扩展现有的文本区域上下文菜单实现,请创建一个预应用 vexi.widget.textarea
的模板,并在 [=12] 上放置一个 read 陷阱=] 属性。我们可以使用 cascade
从 属性 中调用读取 - 即调用现有实现 - returns 一个数组。我们只需添加到该数组:
<vexi xmlns="vexi.widget">
<textarea>
// overlays the trap specified in the inherited
// org.vexi.lib.text.contextmenu by textarea
thisbox.contextActions ++= function() {
var actions = cascade;
actions.push(
new .menuitem({
text: "Foo",
action: function(v) { cascade = v; vexi.log.info("foo"); },
enabled: enabled
}));
return actions;
}
</textarea>
</vexi>
背景
扩展现有文本区域的关键是了解 Traps 以及 <textarea>
小部件如何通过预应用的模板(以及它们预应用的模板等)继承。您可以浏览小部件层次结构,从 src/vexi/widget/textarea.t
开始,然后查找相关的预申请。您最终会看到 org.vexi.lib.widget.textarea
预应用 org.vexi.lib.text.contextmenu
并且我们可以看到默认的上下文菜单实现 copy/cut/paste 等
我想在 Vexi 应用程序的上下文菜单中添加自定义条目。
我尝试添加一个 contextActions
函数,但它抛出一个错误:
<textarea>
thisbox.contextmenu.contextActions = function() {
return [{
text: "Foo",
action: function(v) { cascade = v; vexi.log.info("foo"); },
enabled: enabled
}]);
}
</textarea>
我该怎么做?
要以可重复使用的方式扩展现有的文本区域上下文菜单实现,请创建一个预应用 vexi.widget.textarea
的模板,并在 [=12] 上放置一个 read 陷阱=] 属性。我们可以使用 cascade
从 属性 中调用读取 - 即调用现有实现 - returns 一个数组。我们只需添加到该数组:
<vexi xmlns="vexi.widget">
<textarea>
// overlays the trap specified in the inherited
// org.vexi.lib.text.contextmenu by textarea
thisbox.contextActions ++= function() {
var actions = cascade;
actions.push(
new .menuitem({
text: "Foo",
action: function(v) { cascade = v; vexi.log.info("foo"); },
enabled: enabled
}));
return actions;
}
</textarea>
</vexi>
背景
扩展现有文本区域的关键是了解 Traps 以及 <textarea>
小部件如何通过预应用的模板(以及它们预应用的模板等)继承。您可以浏览小部件层次结构,从 src/vexi/widget/textarea.t
开始,然后查找相关的预申请。您最终会看到 org.vexi.lib.widget.textarea
预应用 org.vexi.lib.text.contextmenu
并且我们可以看到默认的上下文菜单实现 copy/cut/paste 等