在用于HPalm设备的“旧”enyo中,我能够从/通过JS调用我的enyo类函数,如下所示:
<span class="button" onclick="app.doSomething();"></span>现在在enyoJS,它不起作用了。我的app.js看起来是这样的:
enyo.kind({
name: "myapp.Application",
kind: "enyo.Application",
view: "myapp.MainView"
});
enyo.ready(function () {
new myapp.Application({name: "app"});
});我几乎尽了我所能想到的一切,但没有任何缝能再起作用了。
var app = new myapp.MainView();
app.renderInto(document.body);
app.doSomething();^等等也不起作用。
我的MainView:
enyo.kind({
name: "myapp.MainView",
kind: "FittableRows",
classes: "enyo-fit enyo-unselectable",
fit: true,
components:[
//... stuff here ...
],
doSomething: function(){
console.log("Hello!");
}
});有没有办法达到我所需要的?泰文
发布于 2014-06-30 13:28:28
你走在正确的轨道上。实际上,您试图直接创建MainView 作品。
app.doSomething()不能工作的原因是:
有几种方法可以获得对应用程序实例的引用。最简单的方法是在create上将其分配给全局的:
var app;
enyo.ready(function() {
app = new myapp.Application({name: "app"});
});
// later
app.doSomething();另一个选项是从enyo.applications哈希中获取它,该哈希按名称存储对每个创建的应用程序的引用。
enyo.applications.app.doSomething();这是一个完整示例
enyo.kind({
name: "myapp.Application",
kind: "enyo.Application",
view: "myapp.MainView",
doSomething: function() {
this.$.mainView.doSomething();
}
});
enyo.kind({
name: "myapp.MainView",
kind: "FittableRows",
classes: "enyo-fit enyo-unselectable",
fit: true,
components:[
//... stuff here ...
],
doSomething: function(){
console.log("Hello!");
}
});
enyo.ready(function () {
var app = new myapp.Application({name: "app"});
// works, but not recommended as it breaks encapsulation
// app.$.mainView.doSomething();
// preferred but requires a little extra code
app.doSomething();
});https://stackoverflow.com/questions/24485089
复制相似问题