7

你將如何去動態加載一個Web組件 - 例如,爲了響應一個URL路由變化?動態加載Web組件/ HTML導入?

我不會提前知道請求的組件,那麼您是否可以簡單地使用JavaScript來編寫HTML導入,然後將代碼添加到頁面中,或者是否存在這種影響?也許谷歌聚合物幫助?

回答

12

只考慮自定義元素,您可以隨時撥打document.registerElement。所以從這個角度來看,您可以使用任何衆所周知的方法動態加載腳本,並擁有動態的自定義元素。現在

,相對於HTML進口:

你能簡單地使用JavaScript編寫HTML進口,然後添加 代碼的頁面

是的,這是基本的想法。

最近版本的HTML Imports polyfill支持動態鏈接標籤。督察,你可以做

var link = document.createElement('link'); 
link.setAttribute('rel', 'import'); 
link.setAttribute('href', some_href); 
link.onload = function() { 
    // do stuff with import content 
}; 
document.body.appendChild(link); 

此外,聚合物具有增強支持此功能,即命令式的API是這樣的:

Polymer.import([some_href], function() { 
    // called back when some_href is completely loaded, including 
    // external CSS from templates 
}); 

第一個參數是一個數組,所以你可以要求多的HREFs 。

+0

如果您正在構建Chrome擴展程序/應用程序,則由於此問題需要使用前者而不是後者:https://github.com/Polymer/polymer/issues/810 –

4

嗨我在聚合物谷歌組問了這個問題。 https://groups.google.com/forum/#!topic/polymer-dev/uarVrxBK7XU

,並針對本文

http://www.html5rocks.com/en/tutorials/webcomponents/customelements/#instantiating

這清楚您可以通過添加元素到DOM或編程實例在運行的元素。然而這似乎暗示你已經在運行時加載了html導入。我認爲我們都希望實現的是使用ajax加載html導入(使用額外的css和js包含),然後添加我們的元素。我將回到聚合物支持論壇,看看我能否在這裏得到答案。

+0

你有沒有得到這個Ajax方式的任何更新? – FutuToad

+0

對不起,這一個:但你有沒有進一步與此? – wittgenstein