2016-08-03 3 views
2

RiotJSを使用してテーブルアプリケーションを作成していて、onclickイベントで同じ問題が発生しています。私はロード時のRiotJS onclickトリガー

<tag onclick={somefunction}>

を使用しようとするほぼすべての時間は、私は非常に不安定な動作を取得します。場合によっては、ページの読み込みや更新時に関数を一括して呼び出し、クリックにはまったく反応せず、起動時に何度もトリガされることもあります。問題の背後にあるパターンを把握しているようには見えませんが、私はそれが回線機能の呼び出しで問題になる傾向があることに気付きました。それは両方で起こるが<tag onclick={function}>を渡す参照してあまり

<tag onclick={console.log("foo")}>

と。誰もこれのような経験はありますか?もっと文脈が必要な場合はコメントしてください。

+2

'{console.log(" foo ")}を使用することはできません{onfick = {somefunc.bind( 'blah')}' https://github.com/riot/riot/issues/1001 –

+1

{ 'それはそれが解析するときに実行/評価されるので、' onclick'では全くありません。 @Daniel_Lは、argsを渡したい場合は、http://github.com/riot/riot/issues/1001に記載されているように、 '.bind'を使うか、' data-'などを設定することができます – user1278519

+0

'somefunction(){/ private vars */returns function(){ /* privateへのアクセス}このようにして、あなたのテンプレートは次のようになります:somefunc.bind( 'blah') 'を実行している' ' – Simon

答えて

0

Riotでは、{}の式は、マウント/更新時に評価されます。

これは、{}が関数呼び出しである場合、マウントされたタグが更新されると、そのタグが更新されるたびに実行されることを意味します。

これはバニラのjavascriptとは異なりますが、onclickは物がクリックされるまで解析されません。

これは、Riotが常にあなたが考える方法で{}の表現を解析するとは限らないため、混乱を招く可能性があります。これは、この場合、複合式では特に厄介である(ブール論理||&&などを持つもの)

、暴動でonclick式/機能を探している...それはの面でそれを評価しようとしますタグ自体...つまり、この:

<button onclick={foobar}>Click me!</button>

暴動がクリックされたときthis.foobar()を実行しようとします。

一般的に私はタグの<script>の部分に自分のメソッドを設定してこれを利用しようとしています。これにより、私の{}式の誤解の余地がほとんどなくなり、ロジックのビットをタグのHTML部分から、スクリプト部分で動作が期待される場所に移動します。

+0

'

    job.Name
「 」たとえば、 – imclean

関連する問題