首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在标记之间共享对象Riot.js

在标记之间共享对象Riot.js
EN

Stack Overflow用户
提问于 2016-12-13 00:23:59
回答 1查看 738关注 0票数 2

如果一个对象是在tag-a中创建的,如何在tag-b中访问它?

tag-a.tag

代码语言:javascript
复制
<tag-a>

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

</tag-a>

tag-b.tag

代码语言:javascript
复制
<tag-b>

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

</tag-b>

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

EN

回答 1

Stack Overflow用户

发布于 2016-12-13 20:37:34

如果它们共享一个父级,你可以这样做,但不推荐这样做,因为标签会耦合在一起。

代码语言:javascript
复制
<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

代码语言:javascript
复制
//Store.js
var Store = function(){
  riot.observable(this)
}

然后,在挂载标记之前,在index.html中将存储添加到全局riot变量中,以便可以从任何标记访问它

代码语言:javascript
复制
<script type="text/javascript">
  riot.store = new Store()
  riot.mount('* ')
</script>

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

代码语言:javascript
复制
send_info() {
  riot.store.trigger('send_to_b', 'Hello')    
}

并且在tag-b中接收消息

代码语言:javascript
复制
riot.store.on('send_to_b', function(greeting) {
  self.hi = greeting
})

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41105165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档