2012-06-12 31 views
9

私はいくつかのbutton要素を含むテンプレートを持っていると言います。 clickイベントを見たい場合は、{{action}}ヘルパーを使用します。しかし、私はmouseEnterまたはmouseLeaveのような他のイベントを通過する方法を理解することはできません。私はEmber.Buttonを使用すると思っていただろうと何とかchildViewsを通じてそれを行うが、それはdeprecatedのようです。Ember.js {{アクション}}をクリックしてください

テンプレート

{{#view App.MyView}} 
    <button {{action "btnClicked"}}>button1</button> 
    <button {{action "btnClicked"}}>button2</button> 
{{/view}} 

JS

App.MyView = Em.View.extend({ 
    btnClicked: function(e){ 
     alert('btnClicked'); 
    }, 
    btnMouseEnter: function(e){ 
     alert('btnMouseEnter'); // how to call this? 
    } 
});​ 

私は{{action "btnMouseEnter" on="mouseEnter"}}を使用することができます知っているが、その後、私はクリックの機能を失います。 各ボタンを独自のEmber.Viewにラップする必要がありますか?その場合、Ember.Buttonはなぜ非推奨ですか?

編集:私はあなたが複数のイベントを持つことができるべきだと思い

が、私は私のforkhereで、この動作を実現し、同じaction

<button {{action "myAction" on="click mouseEnter mouseLeave"}}>button</button> 

をトリガーjsFiddleは

作業、それを実証しています

編集:

誰かがこの機能に興味があれば、議論はhereになります。

答えて

9

非常に良い質問IMHO。

私が見つけた唯一の方法は、このいずれかになります... http://jsfiddle.net/Sly7/Zvred/

私はそれがラップのようなものだと思うので、わからない、それは良い答えだ...

6

イリヤ

エンバーButtonのような要素に対して複数のアクションヘルパーを許可することはベストプラクティスではないと判断しました。彼らの推奨はsly7_7示唆のようなビューを使用することです。リンクについて

https://github.com/emberjs/ember.js/issues/569

+1

1:Githubの上でこの問題の報告書を確認してください。何故彼らが複数の行動をサポートしないのかを説明しなかったのは残念です。 –

+0

私の質問が更新されました。意見はありますか? –

+0

あなたが投稿した問題で回答があると思う) –

関連する問題