2015-08-28 16 views
5

Ben isyan js çok deneyimli değilim. i yarattı etiketlerin Hiyerarşi Isyan js kullanarak çocuk etiketine değişken nasıl geçilebilir

<tag-1> 
    <tag-2> 
     <tag-3> 
     </tag-3> 
    </tag-2> 
</tag-1> 

Şimdi ben (whcih JSON içerir) değişken geçmesi gerekiyor gibidir "etiketlemek-3" ve ben "etiketi-3" güncelleyebilirsiniz nasıl değişkenin her güncellemeye. Şu anda ben "comm" değişkendir ve bağlama değişkeni "comm" den sonra etikette erişilebilir değil "etiket-3" tanımsız göstermek
riot.mount('tag-3', { comm: "Hello" }); 

gibi "etiket-3" montaj ediyorum. Başka bir şey, her etiket html ayrı bir ".tag" içinde ve bu etiket ben diğer etiket çağırıyorum, "tag-1.tag" dosyasında "tag-2" gibi ve "tag-2.tag" olarak adlandırılır i "etiketi-3" ve "etiket-2.tag" dosyası i montaj ediyorum "etiketi-3"

bunu nasıl yapabilirim içinde arıyorum dosya mi?

cevap

5
  1. diğer isyan etiketlerinin içinde etiketlerini monte etmek gerekmez - sadece kök etiketleri monte edilmesi gerekir. Bu nedenle, comm parametreniz tag-3 içine almaz. Bir .tag dosyasında birden fazla etiket tanımına sahip olabilirsiniz. Etiket dosyaları derlendikten sonra, içindeki isyan etiketlerinin birden fazla etiket dosyasından yüklenip yüklenmediği fark etmez.

  2. Değişkenleri etiket öznitelikleri olarak geçirebilirsiniz - bunlar opts değişkeninin altında kullanılabilir.

hep birlikte koymak, sizin tek etiket dosyası şöyle olabilir:

zamanla değişmeye devam edecektir comm değerini düşündüğümüz gibi sesler
<tag-1> 
    <p>This is my TAG1</p> 
    <tag-2 comm="{ commValue}"></tag-2> 

    <script> 
    this.commValue = { text: 'My text' } 
    </script> 
</tag-1> 

<tag-2> 
    <p>This is my TAG2 with comm: { opts.comm.text }</p> 

    <script> 
    this.on('update', function() { 
     // you can use 'opts.comm' here 
    }); 

    </script> 
</tag-2> 
1

. Bu doğruysa, en iyi bahsiniz mevcut etiketler arasında mesaj göndermek için riot.observable() mekanizmasıdır.

  1. değer değişikliği olacak "tetik" istediğiniz bir mesaj neden olan etiketleri Hangisi - belki 'value_changed'.

    riot.observable().trigger('value_changed', {comm: newValueOfComm})

  2. Sizin etiket-3 mesajında ​​'value_changed' için "dinlemek" ve ona dayalı bir şey yapacağız. başvuru sayfası burada http://vinapps.com/riot-cookbook-app/#/pages/between-page

    : http://riotjs.com/api/observable/

    bir çalışma Örneğin

riot.observable().on('value_changed', function(data) { console.log("new value=" + data.comm); })

adresteki "Mekanizması 2" check out
İlgili konular