如何在HTML页面上添加(安装)2 riot.js组件

时间:2019-04-22 13:52:03

标签: riot.js riotjs riot

当我在HTML页面上添加(安装)2个组件时,我收到“ Uncaught TypeError:无法读取在mount $ 1处未定义的属性'class'”

<body>
<script src="https://cdn.jsdelivr.net/npm/riot@3.13/riot+compiler.js"> 
</script>
<script type="riot/tag">
<dict2-app>dict2-app</dict2-app>
</script>
<dict2-app></dict2-app>
<script>
riot.mount('dict2-app')
</script>
<script type="riot/tag">
<dict3-app>dict3-app</dict3-app>
</script>
<dict3-app></dict3-app>
<script>
riot.mount('dict3-app')
</script>
</body>

当我注释//riot.mount('dict{X}-app')其中之一时,代码可以正常工作

2 个答案:

答案 0 :(得分:0)

您不需要调用多个riot.mount,只需要一个如下所示的文件即可:

Uncaught ReferenceError: getClassStatus is not defined

您的代码将是:

riot.mount('*')

答案 1 :(得分:0)

Uncaught TypeError: Cannot read property 'class' of undefined at mount$1是无用的错误消息,表示“暴动不知道具有此名称的组件”。检查并确保同时包含两个模板。将console.log文件添加到每个文件并读取编译的源文件。如果日志没有出现或在错误之后出现,那是您的问题。

最糟糕的是,如果您莫名其妙地两次骚乱,这就是我正在努力解决的问题。基本上,第一个副本将向其注册标签,而第二个副本将对其取消注册(或更准确地说,将Window.riot替换为不了解您的标签的副本)。

编辑:

我尝试了您的代码示例,并得到了相同的错误。它可以与其他答案(riot.mount('*'))配合使用,也可以与以下方式配合使用:

  <script>
    riot.mount('dict2-app')
    riot.mount('dict3-app')
  </script>

它也可以将所有脚本标签放在最后。

<body>
  <script src="https://cdn.jsdelivr.net/npm/riot@3.13/riot+compiler.js">
  </script>
  <script type="riot/tag">
    <dict2-app>dict2-app</dict2-app>
  </script>
  <dict2-app></dict2-app>
  <script type="riot/tag">
    <dict3-app>dict3-app</dict3-app>
  </script>
  <dict3-app></dict3-app>
  <script>
    riot.mount('dict2-app')
  </script>
  <script>
    riot.mount('dict3-app')
  </script>
</body>

不知道这是为什么的问题。