jsrender/jsviewsで問題を発行してください。 jsrender v.0.9.83をうまく利用した巨大なページを構築しました。jsrenderをjsviews {{else}}に移行する -
しかし、私はjsviews v.0.9.89を組み込もうとしているときに(また、jsrender v.0.9.89を使用しようとしている)、私は最も奇妙なバグにぶち当たっています。
{{else}}ブロックでエラーが発生しているようです。ここで
があればelseブロックの一例である:
{{if device_comment}}
{{:device_comment}}
{{else}}
{{:device_name}}
{{/if}}
これは、以前のバージョンでうまくは問題を働いていません。
今すぐエラーをレンダリングしかしjsviewsレポート:私は見つけることができます
JsViews Error: Syntax error
Compiled template code:
// jsvTmpl
var v,t=j._tag,c=j._cnvt,ret=""
+"\n<tr data-id=\"";
try{
ret+=((v=data.id)!=null?v:"");
}catch(e){ret+=j._err(e,view,undefined);}ret=ret
+"\">\n <td><input type=\"checkbox\" class=\"sel\"/></td>\n <td>";
try{
ret+=((v=data.id)!=null?v:"");
}catch(e){ret+=j._err(e,view,undefined);}ret=ret
+"<br/>(";
try{
ret+=((v=data.id)!=null?v:"");
}catch(e){ret+=j._err(e,view,undefined);}ret=ret
+")</td>\n <td>\n ";
try{
ret+=t("if",view,this,[
{view:view,tmpl:1,
params:{args:['device_comment']},
args:[data.device_comment],
props:{}},;
}catch(e){ret+=j._err(e,view,undefined);}ret=ret
{view:view,tmpl:2,
params:{args:[]},
args:[],
props:{}}]);
}catch(e){ret+=j._err(e,view,undefined);}
........ (cut to save space) ...........
return ret;
: "Unexpected token ;"
唯一の予期しないトークンが「;」でありますこのパートでは:私が見つけて、エラーなしでテンプレートをレンダリングするすべての{{他のブロックを削除する場合は今
view:view,tmpl:1,
params:{args:['device_comment']},
args:[data.device_comment],
props:{}},;
、面白いことは、ある(もちろんのではない正確に私のページが他のブロックに基づいて書式設定を予期しているため) 。
私の質問は、どういうことですか? jsviewsは、これらの場合、jsrenderとは何か違うことをしたいのですか? なぜelseブロックが正しくレンダリングできないのですか?
EDIT: 私はjsviews、v.0.9.83の古いバージョンをダウンロードして、jsrenderのv.0.9.83でそれを使用し、すべての作品。私はこの{{else}}ブロック問題を取得しません。
新しいjsviewsライブラリに問題があると思われるので、私はこの質問を開いたままにします。うまくいけば、他の人がこの投稿に気づき、それを多くデバッグする必要はありません。
私はv.0.9.83で作業を続けます。
感謝をショートカット!ここで使用した例は、バグに焦点を当てるために簡略化されています。私の実際のコードは、両方のブロックでより多くのデータを埋めています。将来的にバグを報告する良い場所はありますか、これは容認できますか?あなたの素晴らしい仕事をありがとう! –
バグを報告する最も良い場所は、GitHubのJsRenderまたはJsViewsのissueトラッカーです。 (http://www.jsviews.com/#communityを参照)。実際、このバグをJsRenderのissueトラッカーに追加するとよいでしょう。私はそれが準備ができているときに修正でそこに応答します... – BorisMoore
v0.9.90でリリースされた修正を呼び出す私の答えを更新しました。 – BorisMoore