1

関連付けられたビューを実行するトリガーであるemberjs の onEventを変更したいと考えていますaction。onEvent には 2 つのオプションしかないようです: defaultenterkeypress. など、他のオプションも利用できるかどうかを知りたいfocusOutです。

ちょっとした質問

しかし、最初に、デフォルト以外のオプションを機能させることさえできませんでした。

Myapp.TextField = Ember.TextField.extend({
    onEvent: 'keypress'
});

テキスト フィールドはキーを押しても反応しませんでしたが、enter.

実際の質問

ビューで指定されたonEventをトリガーするために、ember.js テキスト フィールドを他の に応答させるにはどうすればよいでしょうか。actionこれは私が期待しているものです:

HBS:

<script type="text/x-handlebars" id="themodel">
    {{view Myapp.TextField action="targetAction" valueBinding="myText"}}
</script>

JS ビュー:

Myapp.TextField = Ember.TextField.extend({
    // is this possible?
    onEvent: 'focusOut'
});

JS コントローラー:

Myapp.ThemodelController = Ember.ArrayController.extend({
    targetAction: function(){
        var usertext = this.get('myText');
        // do stuff with the usertext ...
    }
});

「実際の質問」の回避策

を変更しないため、これは回避策ですが、targetActiononEventを直接トリガーできます。focusOut

JS ビュー:

Myapp.TextField = Ember.TextField.extend({
    focusOut: function(){
        this.get('controller').set('myText', this.get('value')).targetAction();
    }
});

onEventしかし、私はこの面倒な実装が本当に好きではないので、 で利用する方法があれば教えてくださいfocusOut。ありがとう。

4

2 に答える 2

1

私はあなたの「小さな問題」に似た何かを経験しましたが、テキストフィールドが入力のみに応答する代わりに、キーを押しても入力しても応答しませんでした。

解決策は、この質問に対する mavilein の回答にあります。「keypress」という単語はキャメルケース、つまり「keyPress」でなければなりません。これは、最初に試みたように Ember.TextField クラスを拡張するときにプロパティ名として使用されるか、Mike が提案したように実際のビュー要素の属性として使用されるかに関係なく適用されます。私はそれを両方の方法で試しました。お役に立てれば。

于 2013-08-26T16:50:27.607 に答える