2016-12-02 10 views
0

私はよく似たような質問をしましたが、それでもやり遂げるのは難しいです。試してみてください - 観測可能だが、どこかを台無しにして、それを行うことができません。子タグでまだ子タグから親タグへのRiotjsデータ

riotjsに新しい私は、リストにデータをプッシュする機能があります:関数内で

<make-list> 
...lots of html... 
<script> 
    var piclist = []; --after first function run this list has data 
    .... 
    done: function (e, data) { 
         piclist.push(data.result); 
        } 
    ... 
</script> 
</make-list> 

をし、親データに私はそれにアクセスしたい

<main> 
...lots of html.. 
<script> 
riot.mount('make-list') 

and i wana use that piclist = []; list here inside a function 

</script> 

</main> 

答えて

1

mixinを使用してこのようにしました。たぶん正しい方法ではないかもしれませんが、うまくいきます。

<main> 
...lots of html.. 
<script> 
riot.mount('make-list') 

var piclist = []; 
riot.mixin(piclist) 


</script> 

</main> 
<make-list> 
    ... lots of html ... 
    <script> 
    ... 
     done: function (e, data) { 
     piclist.push(data.result); 
     } 
    ... 
    </script> 
</make-list> 
0

に思えますmake-listタグでリストのリストアイテムを作成し、mainで表示し、make-listで表示するアイテムをmainの子にしたいとします。

親タグ内にriot.mount('make-list')を使用しています。これは少なくとも非常に珍しいことです。実際には、ページ上のすべてのmake-listタグがマウントされます。なぜ騒動の方法に行き、親のhtml部分にこれを追加するのはどうですか?

<main> 
    ... lots of html ... 
    <make-list opts={piclist} /> 

    <script> 
    this.piclist = []; 
    </script> 
</main> 

このオプションでは、子にデータを渡すことができます(この場合はリストへの参照)。子タグ内の次のようにアクセスできます。

<make-list> 
    ... lots of html ... 
    <script> 
    ... 
     done: function (e, data) { 
     this.opts.piclist.push(data.result); 
     } 
    ... 
    </script> 
</make-list> 

これが役立ちます。

+0

ありがとうございましたが、これは探しているものではありません。 make-list.tagは、main.tag関数で必要な項目のリストを作成します... 私は子タグから親タグにデータを渡す必要があります。 あなたが表示する方法、データは子タグから親タグへ渡されません... Uncaught TypeError:未定義(...)のプロパティ 'piclist'を読み取ることができません – Rix

+0

技術的には、子から親にデータを渡すことはありません両方のデータにアクセスできるように、親から子への参照を渡します。おそらく、あなたが得ているエラーは 'make-list'スクリプト部分の他の部分のためです。これは実際のタグを参照していない可能性があります。スクリプト部分の先頭にvar 'tag = this'を設定し、' this.opts'の代わりに 'tag.opts'を使用してみてください – moritz

0

RiotComponentをご覧ください。それは直感的な方法で要素間の通信を可能にします。

関連する問題