javascript - famo.us 中的表面渲染事件

标签 javascript famo.us

我正在寻找一个事件来告诉我表面何时被渲染,以便我可以调用 surface.focus() 之类的方法。

如果我在创建表面后立即调用焦点,则它不起作用。如果我在任意时间后在计时器中调用它,我希望它被渲染,它就可以工作。所以一定有一个我可以使用的事件。

例如,如果我创建一个在 View 内构建一堆表面的小部件,我如何知道该小部件何时已完全构建,更重要的是,它何时被渲染以便我可以将焦点设置在输入表面上?

谢谢

最佳答案

我将 johntraver 的回复标记为答案,但我还想为像我这样刚刚学习名人的人提供 InputSurface 的完整工作示例。此代码继承 InputSurface,以便 focus 方法起作用。

一旦 InputSurface 被渲染,它就会获得焦点。

文本框.js

define(function(require, exports, module) {
    var InputSurface      = require('famous/surfaces/InputSurface');
    var EventHandler      = require('famous/core/EventHandler');
    function TextBox(options) {
        InputSurface.apply(this, arguments);
        this._superDeploy = InputSurface.prototype.deploy;
    }
    TextBox.prototype = Object.create(InputSurface.prototype);
    TextBox.prototype.constructor = TextBox;
    TextBox.prototype.deploy = function deploy(target) {
        this.eventHandler.trigger('surface-has-rendered', this);
        this._superDeploy(target);
    };
    module.exports = TextBox;
});

实现

this.email = new TextBox({
    size: [300, 40],
    placeholder:'email'
});

var event_handler = new EventHandler();

event_handler.on('surface-has-rendered', function(control){
    control.focus();
});

this.email.pipe(event_handler);

关于javascript - famo.us 中的表面渲染事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23313829/

相关文章:

javascript - 使用 Office 插件更改 MS Word 中的主菜单

famo.us - 如何在 famo.us ScrollView 上添加滚动条?

javascript - 通过网络浏览器访问 GPU

javascript - Laravel 在 JavaScript 中的链接

javascript - 删除 Javascript 中特定字符之间的所有内容

javascript - 如何在highcharts中为标题添加边框

javascript - 在 AngularJS Controller 中调用函数

javascript - 围绕中心圆分布圆

css - 如何让 CSS 悬停在 famo.us 表面上触发?