javascript - EnyoJS : Call enyo functions from raw JavaScript

标签 javascript enyo

在 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();

^ 等也不起作用。

我的主视图:

enyo.kind({
    name: "myapp.MainView",
    kind: "FittableRows",
    classes: "enyo-fit enyo-unselectable",
    fit: true,
    components:[
        //... stuff here ...
    ],

    doSomething: function(){
        console.log("Hello!");      
    }   
});

有什么办法可以实现我所需要的吗? TYVM

最佳答案

你走在正确的道路上。事实上,您尝试直接创建 MainView works .

app.doSomething() 不起作用的原因是:

  • 应用程序不存在于全局空间中,并且
  • 应用程序没有 doSomething 方法; MainView 确实如此

有几种方法可以获取对应用程序实例的引用。最简单的方法是在创建时将其分配给全局:

var app;
enyo.ready(function() {
    app = new myapp.Application({name: "app"});
});

// later
app.doSomething();

另一种选择是从 enyo.applications 哈希中获取它,该哈希通过名称存储对每个创建的应用程序的引用。

enyo.applications.app.doSomething();

这是一个complete example

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();
});

关于javascript - EnyoJS : Call enyo functions from raw JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24485089/

相关文章:

JavaScript 过滤器 - 从 jQuery 过滤器回调方法返回什么?

javascript - 在 JavaScript 中,有没有一种方法可以以编程方式允许浏览器在无限循环内接收用户事件?

javascript - enyo.app 卡在创建函数中

javascript - "can' t spot in frozen mode”是什么意思?

javascript - Enyo js - 填充菜单

javascript - 允许 Enyo 中的工具提示包含 HTML 内容

javascript - 我如何知道 enyo.Model 是否被修改?

javascript - 将 RGB 转换为 HEX 问题

javascript - 从 MySQL 查询 google map 上的位置数据

javascript - 如何在js中对数字进行四舍五入