EDIT:は、変数がunderscore.jsテンプレートに補間してもらうことはできませんがjasmine.jsテスト
_.templateSettings = {
interpolate : /\{\{([\s\S]+?)\}\}/g
};
私は苦労取得を持っていた:私は次のようにtemplateSettingsを設定するために覚えて読者を思い出させるために忘れました私のジャスミン仕様を実行しながら、アンダースコアで補間するvarialbe。
boneHeader = Backbone.View.extend({
el: $('#boneTableHeader'),
template: $('#boneTableHeaderTemplate'),
initialize: function(){
this.id = 'boneTableHeader';
this.el = $('#' + this.id);
this.columns = 'blah';
this.template = $('#' + this.id + 'Template');
this.render();
return this;
},
render: function(){
var that = this;
var data = {id: that.id, columns: that.columns}
this.el.html(_.template(this.template.html(), data));
}
});
テンプレート:これは変数の列を補間するために失敗したものの
_.template(
boneHeaderInstance.template.html(),
{ id:boneHeaderInstance.id,
columns:boneHeaderInstance.columns
}
)
:テンプレート、レンダリング方法、および以下のジャスミンのテストを考えると、私はきちんと経由で変数を補間するテンプレートを取得することができています:
<script type = 'text/template' id = 'boneTableHeaderTemplate'>
<tr id = "{{obj.id}}Row">
{{obj.columns}}
</tr>
</script>
でRenderメソッドを:
render: function(){
var that = this;
var data = {id: that.id, columns: that.columns}
this.el.html(_.template(that.template.html(), data));
}
ジャスミンテスト:
describe('boneHeader', function(){
beforeEach(function(){
boneHeaderInstance = boneTableInstance.header;
});
describe('rendering', function(){
it('should have expected html', function(){
expect(
boneHeaderInstance.el.html().replace(/\s\t\n/ , '', 'g')
).toEqual(
_.template(boneHeaderInstance.template.html(),
{ id:boneHeaderInstance.id,
columns:boneHeaderInstance.columns
}).replace(/\s\t\n/ , '', 'g')
);
});
});
});
ジャスミン結果:
Expected ' <tr id="boneTableHeaderRow"></tr> ' to equal ' <tr id = "boneTableHeaderRow"> blah </tr> '
ありがとうございました。私は 'templateSettings'をインクルードしたと思いました。私はそれを使用しており、これを反映するために私の質問を更新します。混乱させて申し訳ありません。答えの残りの部分を見てください。 – kikuchiyo
私はまだ残りの答えを消化しています。私は 'obj'は必要ではないと同意します。このコードで動作obj.columns'なぜ 'obj.id'と'あなたは知っています '_.template( boneHeaderInstance.template.html()、 {ID:boneHeaderInstance.id、 列:boneHeaderInstance.columns } ) '私の答えで提供されたテンプレートと?そうでなければ、大したことはありません。また、私はそれが問題だとは思わない。これは、ジャスミンメッセージごとに 'obj.id'を正しく補間することを考慮すると、' Expected '
と等しくなります。 '
関連する問題