2011-08-13 7 views
1

javascriptコード内でカスタムタグを使用するにはどうすればよいですか?たとえば:Playのjavascriptでカスタムテンプレートタグを使用するにはどうすればよいですか?フレームワーク?

function toHTML(message){ 
    return #{customTag message:message /}; 
} 

は動作しません。..

感謝を!

//いくつかの明確化

私はAJAXを使用したメッセージのリストを取得しています、と私は<li>要素にメッセージをフォーマットするためのHTMLコードが含まれている「customTag」と呼ばれるHTMLタグを持っています。

私はHTMLファイル内に

#{customTag message:'hello' /} 

直接呼び出した場合、それが動作して<li>hello</li>ことによってそれを置き換えます。しかし、JavaScriptから呼び出すと、エラーメッセージが表示されます。

答えて

1

あなたが持っている問題、あなたはクライアント側のイベント(JavaScriptの実行)とサーバー側のロジック(テンプレートのレンダリング)をミックスしようとしているということです。カスタムタグはクライアントサイドに到達する前にサーバサイドから実行されるので、あなたのアプローチはうまくいかないでしょう。

あなたはそれをプレイタグを使用して仕事を得ることができますが、私はあなたがクライアント側のこの種を行うためのJavascriptのテンプレートを使用して考えることを示唆しています。 Playダウンロードのsamples-and-testsフォルダにあるChatアプリケーションを見て、実際の動作を確認してください。ただし、Playテンプレート/タグを使用して機能させる場合は、下記をご覧ください。あなたはそれが入力になりませんように、カスタムタグを変更するが、代わりにjavascriptの変数の「意識」である場合

が、これは動作するはずです。

"<li>" +message+ "</li>"; 

だから、これはタグに変数を渡すためにタグを使用していないようなので、あなたのタグのコードが見えるだろうが、代わりにクライアント側のJavaScript変数を使用しています。

Iは、テストアプリケーション(ビュー/アプリケーション/ index.htmlを)で、次のコードでこれをテストし、期待どおりには、JavaScriptを出力します。

<html><head></head> 
<body> 
<script type="text/javascript"> 
    function toHTML(message){ 
     return #{message /} 
    } 

    alert(toHTML("hello")); 
</script> 
</body> 
</html> 
+0

はい、結局私が思ったものなので、今は完全に動作するEJSを使用しています! – Rand

1

この文句を言わない仕事。あなたの価値を二重引用符で囲んでみてください。あるいは、あなたが実際に望むものを明確に書いてください。私の意見で

0

カスタムタグは、コンテンツにはJavaScriptが解釈される前に、クライアントに送信した、すなわち前にサーバー側で評価されるため、これは動作しないことができます。

[私の英語のため申し訳ありません!]

関連する問題