[英]Underscore Template not working with Backbone View
我不确定为什么我的下划线模板没有呈现。 我希望它根据返回的数据显示3 select
下拉菜单。
这是我的代码的摆弄。 检查控制台中的数据: http : //jsfiddle.net/f7v3g/
如果您看到返回的数据,则会看到以下结构
-楷模
--attributes
---尺寸
---- object0
-----名称(将是第一个下拉菜单旁边显示的文本标签)
-----精炼(精炼的子代应为option
标签)
---- object1
-----名称(将是第二个下拉菜单旁边显示的文本标签)
-----精炼(精炼的子代应为option
标签)
----对象2
-----名称(将是出现在第三个下拉菜单旁边的文本标签)
-----精炼(精炼的子代应为option
标签)
这是主干JavaScript:
(function () {
var DimensionsModel = Backbone.Model.extend({
defaults: {
dimensionName : 'undefined',
refinements : 'undefined'
}
});
var DimensionsCollection = Backbone.Collection.extend({
model: DimensionsModel,
url: 'http://jsonstub.com/calltestdata',
});
var setHeader = function (xhr) {
xhr.setRequestHeader('JsonStub-User-Key', '0bb5822a-58f7-41cc-b8a7-17b4a30cd9d7');
xhr.setRequestHeader('JsonStub-Project-Key', '9e508c89-b7ac-400d-b414-b7d0dd35a42a');
};
var DimensionsView = Backbone.View.extend({
el: '.js-container',
initialize: function (options) {
this.listenTo(this.model,'change', this.render);
this.model.fetch({
beforeSend: setHeader
});
console.log(this.model);
return this;
},
render: function () {
this.$el.html( this.template(this.model, 'dimensions-template') );
},
template: function (models, target) {
var templateSelectors = _.template($('#'+target).html(),{
dimensions: this.model
});
return templateSelectors;
},
});
var myCollection = new DimensionsCollection();
var myView = new DimensionsView({model: myCollection});
}());
这是我的HTML和Underscore模板:
<div class="js-container">
<script type="text/template" id="dimensions-template">
<% _.each(dimensions, function(dimension,i){ %>
<%- dimension.get('dimensionName') %> <select id="<%- dimension.get('dimensionName') %>">
<option>Select</option>
<% _.each(dimension.get('refinements'), function(ref,x){ %>
<option data-refineurl='{
"refinementUrl": "<%- ref.refinementurl %>",
"nVal": "<%- ref.nval %>"
}'><%- ref.name %></option>
<% }); %>
</select>
<% }); %>
</script>
</div>
编辑:拼写和数据结构的示例。
我看到一些错误:
1)在DimensionsView初始化内,您应该添加一个this.render调用
2)在template:函数(模型,目标)内部,您使用this.models。 但是您将模型作为第一个参数传递了吗?
3)您是否在某处将模型添加到集合中? 现在您的模板将尝试遍历它们。 因此,需要模型在集合中循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.