如果一个对象是在tag-a中创建的,如何在tag-b中访问它?
tag-a.tag
<tag-a>
<script>
const o = {data: () => {return "something" }}
</script>
</tag-a>tag-b.tag
<tag-b>
<script>
// access object o created in tag-a
</script>
</tag-b>我尝试过使用混入,但我认为这需要在父标记中注册?
发布于 2016-12-13 20:37:34
如果它们共享一个父级,你可以这样做,但不推荐这样做,因为标签会耦合在一起。
<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/
https://stackoverflow.com/questions/41105165
复制相似问题