4

レンダリングには Pure JS ディレクティブを使用します。

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

テンプレート内のノードが欠落している場合、Pure JS のデフォルトの動作は次の理由でクラッシュします。

テンプレートにノード「XXX」が見つかりませんでした

このデフォルトの動作は、テンプレートに矛盾がないことを保証するため、完全に理解できます。ただし、同じケースでは、失敗した割り当てをスキップして残りの割り当てを続行し (エラーを記録する可能性があります)、単一のエラー/タイプミスが原因でレンダリング全体が失敗するのを回避したいと考えています。

Pure JS でこの動作を取得する方法はありますか? 「存在する場合」だけ要素をレンダリングするように Pure JS に指示できますか?

4

1 に答える 1

3

残念ながら、Pure JSの現在の安定版(リビジョン: 2.79 ) では、「存在する場合」要素をレンダリングできません。

次の Pure コード スニペットは、エラーがどのようにスローされるかを示しています。

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、dojo などのライブラリのいずれかによって) が見つからない場合は、前述のエラーがスローされます。


そのような状況で私が使用する回避策は次のとおりです。

  • Pureがエラーをスローしないように、考えられるすべての要素でテンプレートを使用します
  • 一部の要素 (エラー メッセージの表示など) は、CSS クラスを使用して隠されています。
  • 入力データに応じて要素を非表示/表示するディレクティブを使用して、Pure および JavaScript 関数を使用して CSS クラスを変更します。
于 2013-01-16T21:17:25.923 に答える