2016-04-28 12 views
1

I次のコードを持っている: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に追加されます。ただし、更新されません。

EDIT:小さな変更。

+0

これは 'my-tag'に 'dynamic'タグを入れたいからですか?経路x上で、タグxがレンダリングされ、経路y =>タグy? – Phortuin

+0

はい。これを行う適切な方法であるかどうかは分かりませんが、それ以外はどうすれば達成できるかわかりません。 – Gasim

答えて

1

あなたの解決策の問題は、RiotがJavaScript経由でRiotタグとして挿入されたHTMLを解析しないということです。別のアプローチは、例えば、より良い仕事ができる:

<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-ishttp://riotjs.com/guide/#html-elements-as-tagsを使用しても問題なく動作する可能性があります(悲しいことに、適切な文書が疎そうです)。

+0

ありがとう!最初のアプローチが働いた。 2つ目はうまくいきませんでした。私は 'riot-tag 'と' data-is'の両方を試しましたが、運はありませんでした。私は幸せです。 – Gasim

+0

よろしくお願いします!おそらく、2番目のアプローチでは、最初のスクリプトと同じ問題が発生します: 'riot-tag =" some-riot-tag "を設定した後、div [riot-tag]を実際のRiotタグとして解析しません – Phortuin

関連する問題