我正在寻找一个事件来告诉我何时渲染表面,以便我可以调用诸如 surface.focus() 之类的方法。
如果我在创建表面后立即调用焦点,它将不起作用。如果我在任意时间后在计时器中调用它,我希望它能够被渲染,它就会起作用。所以一定有一个我可以使用的事件。
例如,如果我创建一个在视图内构建一堆表面的小部件,我如何知道该小部件何时已完全构建,更重要的是,它何时被渲染,以便我可以将焦点设置在输入表面上?
Thanks
我将 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)