我尝试在enyo中创建自己的种类

enyo.kind(
{
    name: "DeviceButton",
    kind: "Button",
    caption: "",
    published: { userAgent: "" },
    flex: 1,
    onclick: "butclick",
    butclick: function() { console.log("User agent changed to " + this.userAgent) }
})


但是当我单击时,没有显示任何内容

如果我只是做了

onclick: console.log("User agent changed to " + this.userAgent)


已打印this.userAgent未定义

我究竟做错了什么?

顺便说一句,是否可以通过onclick发送参数(以使对应于click的函数获取变量)

谢谢

最佳答案

您在这里遇到的问题是onclick属性实际上是为事件处理程序提供名称,以便Enyo在收到点击时将事件发送到该事件处理程序。 “ butclick”事件不会分派给DeviceButton,而是分派给它的父级。

如果您想完全在自己的范围内处理事件,则需要将其设置为“处理程序”。在Enyo 2.x中,您可以这样操作:

enyo.kind(
{
    name: "DeviceButton",
    kind: "Button",
    caption: "",
    published: { userAgent: "" },
    flex: 1,
    handlers {
      onclick: "butclick"
    },
    butclick: function() { console.log("User agent changed to " + this.userAgent) }
})


在Enyo 1.x中,您只需要将处理函数命名为“ onclickHandler”。我提到Enyo 1解决方案是因为我看到您的定义中包含“ flex:1”。 Enyo 2不支持Flexbox,而是使用“ Fittable”系统。

关于javascript - 恩约自定义属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13164216/

10-09 16:37