在标签之间共享对象Riot.js

时间:2016-12-12 16:23:59

标签: tags observable riot.js

如果在标签中创建了一个对象 - 如何在tag-b中访问它?

标签-a.tag

<tag-a>

<script>
 const o = {data: () => {return "something" }}
</script>

</tag-a>

标签-b.tag

<tag-b>

<script>
 // access object o created in tag-a
</script>

</tag-b>

我尝试过使用mixin,但我认为这需要在父标记中注册?

1 个答案:

答案 0 :(得分:1)

如果他们共享父母,你可以做这样的事情,但不建议这样做,因为标签会被耦合。

<parent>
  <tag-a></tag-a>
  <tag-b></tag-b>
</parent>

<tag-a>
  <script>
    this.o = 'Hi bro'
  </script>  
</tag-a>

<tag-b>
  <span>{this.parent.tags.tag-a.o}</span>
</tag-b>

有关简单标记通信的更多信息: http://vitomd.com/blog/coding/tag-communication-in-riot-js-part-1/

更好的方法是使用可观察模式进行沟通。

首先创建store.js

//Store.js
var Store = function(){
  riot.observable(this)
}

然后在index.html中安装标签之前,将商店添加到全局riot变量中,以便可以从任何标签访问

<script type="text/javascript">
  riot.store = new Store()
  riot.mount('* ')
</script>

然后在tag-a中,您可以触发发送信息

send_info() {
  riot.store.trigger('send_to_b', 'Hello')    
}

在tag-b中收到消息

riot.store.on('send_to_b', function(greeting) {
  self.hi = greeting
})

更多信息:http://vitomd.com/blog/coding/tag-communication-in-riot-js-part-2/