0
我有一個Backbone.js的看法是這樣的:訪問模型從骨幹視圖下劃線模板屬性
var StreamV = Backbone.View.extend({
tagName: 'div',
className: 'stream',
events: { },
initialize: function() {
this.listenTo(this.model, 'change', this.render);
},
render: function() {
this.$el.html(this.template(this.model.attributes));
return this;
},
template: function (data) {
console.log(data);
if (data.mime_type.match(/^audio\//)) {
return _.template('<audio controls><source src="<%= resource_uri %>">No sound</audio>', data);
} else {
// FIXME Do what?
return _.template();
}
},
});
,看起來像這樣的對應型號:
var StreamM = Backbone.Model.extend({
url: function() {
return (this.id) ? '/streams/' + this.id : '/streams';
}
});
而且我試圖實例化StreamV
這樣的視圖:
$(document).ready(function() {
var streams = new StreamsC;
streams.fetch({success: function (coll, resp, opts) {
var mp3 = coll.findWhere({mime_type: 'audio/mp3'});
if (mp3) {
var mp3view = new StreamV({el: $('#streams'),
model: mp3});
mp3view.render();
} else {
$('#streams').html('No audio/mp3 stream available.');
}
}});
});
我發現我的Underscor e模板不會提取我發送的數據。它說:
ReferenceError: resource_uri is not defined
((__t=(resource_uri))==null?'':__t)+
我試着改變_.template
調用提供與resource_uri
屬性設置一個文本對象,我也得到了同樣的錯誤。
我是否通過提供一個對象作爲_.template
的第二個參數來做正確的事情?
OK,是讓我的現有'template'函數返回一個編譯下劃線的模板,但是,當然我並沒有真正執行該模板。這裏是我在'render'函數中的修復:'this。$ el.html(this.template(this.model.attributes)(this.model.toJSON()));' – ironchicken 2014-10-10 11:16:16
另外,正如你所說,刪除第二個參數爲'_.template'。 – ironchicken 2014-10-10 11:17:08
順便說一句,你曾經可以說'_.template(模板,數據)',但[不再](http://stackoverflow.com/a/25881231/4798630)。 – 2014-10-10 16:26:48