gpt4 book ai didi

javascript - 下划线模板不适用于主干 View

转载 作者:行者123 更新时间:2023-11-30 05:38:09 25 4
gpt4 key购买 nike

我不确定为什么我的 Underscore 模板没有呈现。我希望它根据返回的数据显示 3 个 select 下拉菜单。

这是我的代码的 fiddle 。检查控制台中的数据:http://jsfiddle.net/f7v3g/

如果您看到返回的数据,您将看到以下结构

-模型

--属性

---尺寸

----对象0

-----名称(将是出现在第一个下拉菜单旁边的文本标签)

-----精化(精化的子元素应该是option标签)

----对象1

-----名称(将是出现在第二个下拉菜单旁边的文本标签)

-----精化(精化的子元素应该是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 和下划线模板:

<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) inside template: function (models, target),你使用this.models。但是您将模型作为第一个参数传递?

3) 你有没有在某个地方添加模型到你的收藏中?现在你的模板将尝试遍历它们。所以它需要模型在集合中循环。

关于javascript - 下划线模板不适用于主干 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22336308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com