我尝试在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/