如何通过 JS 将 riot 标签附加到根目录?
How can I append riot tag to the root through JS?
我有以下代码:
<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;但是,它没有更新。
编辑:小改动。
我认为您的解决方案的问题在于 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>
编辑:似乎 riot-tag
将在(不久的)将来被弃用,但解决方案仍然可以使用 data-is
:http://riotjs.com/guide/#html-elements-as-tags(遗憾的是,关于此的适当文档似乎很少)。
我有以下代码:
<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;但是,它没有更新。
编辑:小改动。
我认为您的解决方案的问题在于 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>
编辑:似乎 riot-tag
将在(不久的)将来被弃用,但解决方案仍然可以使用 data-is
:http://riotjs.com/guide/#html-elements-as-tags(遗憾的是,关于此的适当文档似乎很少)。