如何通过JS将riot标签附加到根目录?

时间:2016-04-28 09:30:19

标签: javascript riot.js riotjs

我有以下代码:

<my-tag>

    <script>
        var self = this;
        riot.route('/test', function() {
            self.root.innerHTML = '<some-riot-tag></some-riot-tag>';
            self.update();
        });
    </script>
</my-tag>

如果我在没有JS的情况下添加它,它可以工作:

<my-tag>
    <some-riot-tag></some-riot-tag>
</my-tag>

如何使用javascript完成此工作?标签被添加到DOM;但是,它没有更新。

编辑:小改动。

1 个答案:

答案 0 :(得分:1)

我认为你的解决方案存在的问题是Riot没有通过JavaScript解析插入的HTML作为Riot标签。一种不同的方法可以更好地工作,例如:

<my-tag>
    <some-riot-tag if="{ route == 'test' }" />
    <other-riot-tag if="{ route == 'bar' }" />

    <script>
        var self = this;
        riot.route('/test', function() {
            self.route = 'foo';
            self.update();
        });
        riot.route('/bar', function() {
            self.route = 'bar';
            self.update();
        });
    </script>
</my-tag>

另一种方法可能是使用riot-tag属性(我没有对此进行测试,但它应该有效):

<my-tag>

    <div riot-tag="{ tagName }"></div>

    <script>
        var self = this;
        riot.route('/test', function() {
            self.tagName = 'some-riot-tag';
            self.update();
        });
        riot.route('/bar', function() {
            self.tagName = 'other-riot-tag';
            self.update();
        });
    </script>
</my-tag>

修改:似乎{(1}}将在(近期)未来被弃用,但解决方案仍然可以使用riot-taghttp://riotjs.com/guide/#html-elements-as-tags(遗憾的是,关于此的适当文件似乎很少)。