1

次のようなカスタム コンポーネントを作成しました。

my.Cmp = function(opt_domHelper) {
    goog.ui.Component.call(this, opt_domHelper);

    ...

};
goog.inherits(my.Stamina, goog.ui.Component);

my.Cmp.prototype.createDom = function() {
    this.decorateInternal(this.dom_.createDom('div', 'сmp-inner-div'));
};

my.Cmp.prototype.decorateInternal = function(element) {
    my.Cmp.superClass_.decorateInternal.call(this, element);
    var elem = this.getElement();

    ...

};

my.Cmp.prototype.disposeInternal = function() {
    my.Stamina.superClass_.disposeInternal.call(this);

    ...

};

my.Cmp.prototype.enterDocument = function() {
   ...
}

my.Cmp.prototype.exitDocument = function() {
   ...
}

次に、htmlドキュメントにインスタンスを作成しました

var cmp = new my.Cmp();
cmp.render(goog.dom.getElement('cmpContainerDivId'));

このコンポーネントはキーボードを使用します。マウス クリック後にキーボード フォーカスを取得し、正常に動作します。ページの読み込み後に kb にフォーカスを与える方法が見つかりません。goog.ui.Control から my.Cmp コンポーネントを継承し、その setFocused メソッドを使用しようとしました。getState() は、フォーカスが設定されていることを示していますが、マウス クリックまたはタブ キーが押される前に kb を入力しても反応しません。

4

1 に答える 1

3

おそらく、次のようになります。

my.Comp.prototype.setFocused = function(focused) {
    goog.base(this, 'setFocused', focused);
    if (focused) this.getElement().focus();
};

// ...

goog.events.listen(goog.dom.getWindow(), goog.events.EventType.LOAD, function() {
    // ... other init
    theCmp.setFocused(true);
});

setFocused()isFocused()主に簿記、および同様の状態メソッドなどのために存在するようです。

于 2012-04-23T03:24:24.383 に答える