首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EnyoJS:从原始JavaScript调用enyo函数

EnyoJS:从原始JavaScript调用enyo函数
EN

Stack Overflow用户
提问于 2014-06-30 07:37:02
回答 1查看 600关注 0票数 2

在用于HPalm设备的“旧”enyo中,我能够从/通过JS调用我的enyo类函数,如下所示:

代码语言:javascript
复制
<span class="button" onclick="app.doSomething();"></span>

现在在enyoJS,它不起作用了。我的app.js看起来是这样的:

代码语言:javascript
复制
enyo.kind({
    name: "myapp.Application",
    kind: "enyo.Application",
    view: "myapp.MainView"
});

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

我几乎尽了我所能想到的一切,但没有任何缝能再起作用了。

代码语言:javascript
复制
var app = new myapp.MainView();
app.renderInto(document.body);
app.doSomething();

^等等也不起作用。

我的MainView:

代码语言:javascript
复制
enyo.kind({
    name: "myapp.MainView",
    kind: "FittableRows",
    classes: "enyo-fit enyo-unselectable",
    fit: true,
    components:[
        //... stuff here ...
    ],

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

有没有办法达到我所需要的?泰文

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-30 13:28:28

你走在正确的轨道上。实际上,您试图直接创建MainView 作品

app.doSomething()不能工作的原因是:

  • 应用程序不存在于全球空间并且
  • app没有doSomething方法;MainView有

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

代码语言:javascript
复制
var app;
enyo.ready(function() {
    app = new myapp.Application({name: "app"});
});

// later
app.doSomething();

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

代码语言:javascript
复制
enyo.applications.app.doSomething();

这是一个完整示例

代码语言:javascript
复制
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();
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24485089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档