我有一个类似 tweetEnyo 的组件,它是用 enyo 脚本创建的。并基于其种类,我想执行一些操作。
有没有办法在运行时找到在 enyo 中创建的组件类型?
您应该能够kind
在运行时访问该属性。这是一个检测所选项目种类的示例:
http://jsfiddle.net/RoySutton/frTFK/
如果需要使用调试器找到它,可以将 ID 与全局 enyo 对象的 $ 哈希一起使用。例如:
enyo.$.app_myKind.kind
不要从即将发布的博客文章中抢走风头,但在 Chrome/Firefox 网络检查器中,$0 是最后一个检查的元素。所以,enyo.$[$0.id].kind
是检查项目的种类。
我确实注意到在我的示例中 App 与它没有关联。确定为什么会这样。
更新: App 未使用特定种类声明,在这种情况下将回退到父级的默认种类Control
。您可以使用 访问该值.defaultKind
。此外,您可以使用对种类的实际引用来指定种类(例如 kind: enyo.Button
),因此.kind
不能依赖。
获取名称的正确方法是使用.kindName
,这将是实际的种类。
来自 enyo 网站:
基础 enyo.Control 的工作方式很像 HTML 标记。您可以分配类和属性并为其赋予样式。例如
new enyo.Control({content: "Hello From Enyo", classes: "foo",
style: "color: red", attributes: {tabIndex: 0}}).renderInto(document.body);
所以你可以这样做:
new enyo.Control({content: "Hello From Enyo", classes: "foo",
style: "color: red", attributes: {tabIndex: 0, enyo:true}}).renderInto(document.body);
它将 enyo 的 attr 设置为 true 并检查它。任何有它的东西都是 enyo 组件。
示例:http: //jsfiddle.net/NKTRe/