2012-01-20 26 views
4

我用純JS指令渲染:Pure JS有可能實現「條件渲染」嗎?

http://beebole.com/pure/documentation/rendering-with-directives/

如果模板中的一個節點丟失,純JS的默認行爲是崩潰,因爲:

節點「XXX 「未在模板中找到

此默認行爲是完全可理解的,因爲它確保模板中沒有不一致。但是,在相同的情況下,您可以跳過失敗的任務並繼續執行其餘的任務(可能會記錄錯誤),以避免整個渲染由於單個錯誤/拼寫錯誤而失敗。

有什麼方法可以用Pure JS獲得這種行爲?我可以告訴純JS來渲染一個元素,如果它「存在」?

回答

3

Pure JS不幸的是當前穩定版本(修訂:2.79)不允許「如果存在」來渲染一個元素?

以下純代碼片段顯示錯誤是如何拋出:

if(selector === '.' || (!selector && attr)){ 
    target[0] = dom; 
}else{ 
    target = plugins.find(dom, selector); 
} 
if(!target || target.length === 0){ 
    return error('The node "' + sel + '" was not found in the template:\n' + outerHTML(dom).replace(/\t/g,' ')); 
} 

正如你可以看到,如果target尚未發現(圖書館如jQuery之一,道場等),那麼上述錯誤被拋出。


解決方法我在那種情況下使用如下:

  • 我使用的模板,所有可能的元素,使純不拋出錯誤
  • 一些元素(如顯示錯誤信息等。)使用CSS類隱藏
  • 我使用純指令和JavaScript函數更改了CSS類,指令根據輸入數據隱藏/顯示元素。