如何使用riot js将变量传递给子标记

时间:2015-08-28 11:56:07

标签: javascript riot.js

我在暴动中没有那么多经验。我创建的标签层次结构就像

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

现在我需要将变量(whcih包含JSON)传递给&#34; tag-3&#34;,并且在该变量的每次更新时,我如何更新&#34; tag-3&#34;。现在我正在安装&#34; tag-3&#34;喜欢

riot.mount('tag-3', { comm: "Hello" });

其中&#34; comm&#34;是变量的,并且在mount变量&#34; comm&#34;之后标签&#34; tag-3&#34;无法访问它显示未定义。另一件事,每个标签html都在一个单独的&#34; .tag&#34;并且使用该标签我正在调用其他标签,例如&#34; tag-1.tag&#34; file&#34; tag-2&#34;被称为&#34; tag-2.tag&#34;我打电话给#34; tag-3&#34;,以及&#34; tag-2.tag&#34;文件我正在安装&#34; tag-3&#34;

我该怎么做?

2 个答案:

答案 0 :(得分:5)

  1. 您无需在其他防暴标签中安装标签 - 只需要安装根标签。这就是为什么您的aa(8)参数无法将其转换为comm

  2. 您可以在一个.tag文件中包含多个标记定义。编译标记文件后,内部的防暴标记是否从多个标记文件加载无关紧要。

  3. 您可以将变量作为标记属性传递 - 它们将在tag-3变量下提供。

  4. 总而言之,您的单个标记文件可能如下所示:

    opts

答案 1 :(得分:1)

听起来, comm 的价值会随着时间的推移而不断变化。如果这是真的,那么最好的选择是在现有标签之间发送消息的riot.observable()机制。

  1. 导致价值变化的任何标签都会“触发”您选择的消息 - 也许是“value_changed”。

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

  2. 您的tag-3将“监听”消息“value_changed”并根据它执行某些操作。

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

  3. 有关工作示例,请查看“机制2”: http://vinapps.com/riot-cookbook-app/#/pages/between-page

    参考页面在这里: http://riotjs.com/api/observable/