Backbone.js 主干线。木偶组合视图选项列表
我想创建一个CompositeView,其中包含集合中的下拉列表: 我的看法:Backbone.js 主干线。木偶组合视图选项列表,backbone.js,marionette,Backbone.js,Marionette,我想创建一个CompositeView,其中包含集合中的下拉列表: 我的看法: var ItemView = Backbone.Marionette.ItemView.extend({ template: '#item-tpl' }); var CompositeView = Backbone.Marionette.CompositeView.extend({ template: '#comp-tpl', itemView: ItemView, itemView
var ItemView = Backbone.Marionette.ItemView.extend({
template: '#item-tpl'
});
var CompositeView = Backbone.Marionette.CompositeView.extend({
template: '#comp-tpl',
itemView: ItemView,
itemViewContainer: '#mySelect'
});
我的模板:
<script id = "item-tpl" type="text/template">
<option value="<%= id %>"><%= name %></option>
</script>
<script id = "comp-tpl" type="text/template">
...
<form>
<div class="control-group">
<select id='mySelect'></select>
</div>
</form>
...
</script>
...
...
呈现的HTML显示默认的div,这打破了选项列表
<select id="mySelect">
<div>
<option value="5">name 1</option>
</div>
<div>
<option value="6">name 2</option>
</div>
</select>
名字1
名称2
我怎样才能做到这一点:
<select id="mySelect">
<option value="5">name 1</option>
<option value="6">name 2</option>
</select>
名字1
名称2
我会使用这种技术:
从简化模板开始:
<script id = "item-tpl" type="text/template">
<%= name %>
</script>
您可以指定标记名的属性,这样它就不会使用默认的div
标记进行渲染,而是使用所需的选项
标记。然后,当呈现该选项时,需要设置值
属性,这是通过onRender
函数实现的
最后,这里是您的新组合视图:
var aCompositeView = Backbone.Marionette.CompositeView.extend({
template: '#comp-tpl',
itemView: aItemView,
itemViewContainer: "select"
});
我们指定itemViewContainer
来告诉木偶将项目视图放在哪里。这样,我们就不需要重新定义appendHtml
这个解决方案更干净,因为我们使用木偶功能,而不是自己做任何事情。。。当然,其他解决方案也会奏效
如果您想了解有关使用木偶生成正确的HTML结构的更多信息,您可能会对我的这篇博文感兴趣:我会使用这种技术:
从简化模板开始:
<script id = "item-tpl" type="text/template">
<%= name %>
</script>
您可以指定标记名的属性,这样它就不会使用默认的div
标记进行渲染,而是使用所需的选项
标记。然后,当呈现该选项时,需要设置值
属性,这是通过onRender
函数实现的
最后,这里是您的新组合视图:
var aCompositeView = Backbone.Marionette.CompositeView.extend({
template: '#comp-tpl',
itemView: aItemView,
itemViewContainer: "select"
});
我们指定itemViewContainer
来告诉木偶将项目视图放在哪里。这样,我们就不需要重新定义appendHtml
这个解决方案更干净,因为我们使用木偶功能,而不是自己做任何事情。。。当然,其他解决方案也会奏效
如果您想了解有关使用木偶生成正确HTML结构的更多信息,您可能会对我的这篇博文感兴趣:非常简单,实际上您只需使用jquery包装“el”(元素),因此视图应该如下所示:
var aItemView = Backbone.Marionette.ItemView.extend({
..
..
el: $('#mySelect'),
..
这样就避免了默认的div,并且只能使用所需的元素。
那么你会得到这个吗
<select id="mySelect">
<option value="5">name 1</option>
<option value="6">name 2</option>
</select>
名字1
名称2
非常简单,实际上您只需使用jquery包装“el”(元素),因此视图应如下所示:
var aItemView = Backbone.Marionette.ItemView.extend({
..
..
el: $('#mySelect'),
..
这样就避免了默认的div,并且只能使用所需的元素。
那么你会得到这个吗
<select id="mySelect">
<option value="5">name 1</option>
<option value="6">name 2</option>
</select>
名字1
名称2