2016-04-28 39 views
1

我有以下代碼:我怎樣才能通過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;但是,它不會更新。

編輯:小小的變化。

+0

這是因爲你想在'my-tag'中有'動態'標籤嗎?因此,在路線x上,標記x被渲染,並且路由y =>標記y? – Phortuin

+0

是的。我不知道這是否是正確的方式,但我不知道如何才能做到這一點。 – Gasim

回答

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> 

編輯:似乎riot-tag將在(近)未來不推薦使用,但解決方案仍然可以使用data-ishttp://riotjs.com/guide/#html-elements-as-tags(遺憾的是,有關此問題的適當文檔似乎很少)。

+0

謝謝!第一種方法奏效。第二個沒有工作。我嘗試過'暴亂標記'和'數據是',但沒有運氣。雖然我很高興。 – Gasim

+0

好聽!可能第二種方法會遇到與初始腳本相同的問題:在設置了'riot-tag =「some-riot-tag」'後,它不會將div [riot-tag]解析爲實際的Riot標記 – Phortuin