Jquery Backbone.js视图中更灵活的标记名
我试图在选择选项标记视图上强制使用'multiple'='multiple'属性,这是一个使用jQuery选择器和attr函数的主干视图,但我似乎无法使其工作。这是我的密码:Jquery Backbone.js视图中更灵活的标记名,jquery,html,backbone.js,Jquery,Html,Backbone.js,我试图在选择选项标记视图上强制使用'multiple'='multiple'属性,这是一个使用jQuery选择器和attr函数的主干视图,但我似乎无法使其工作。这是我的密码: window.MyListView = Backbone.View.extend({ tagName:'select', className: 'mySelect', initialize:function () { }, render:function (eventName) { $(".mySel
window.MyListView = Backbone.View.extend({
tagName:'select',
className: 'mySelect',
initialize:function () {
},
render:function (eventName) {
$(".mySelect").attr('multiple', 'multiple');
_.each(this.model.models, function (myModel) {
$(this.el).append(new MyListItemView({model:myModel}).render().el);
}, this);
return this;
}
根本不工作。有什么想法或其他方法吗?我是否最好只创建一个带有selectmultiple标记的新视图,然后将myListItemView对象附加到该视图中
非常感谢,
Jimmy很可能,这不起作用的原因是您的视图尚未连接到DOM,因此$(“.mySelect”)找不到节点 例如,在使用
render()
方法的过程中,如果要对视图中的节点进行操作,则需要使用视图的el
,主干中有两个帮助程序可以完成此操作
- -视图的根节点
- -视图根节点的jquery对象
- -从根节点开始的jquery选择器
window.MyListView = Backbone.View.extend({
tagName:'select',
className: 'mySelect',
initialize:function () {
},
render:function (eventName) {
this.$el.attr('multiple', 'multiple');
return this;
}
});
您可以使用“属性”属性为视图的标记提供任意属性:
Backbone.View.extend({
tagName: "select",
attributes: {
"multiple": "multiple"
}
});
选择“多个”问题现在已解决,但我已尝试使用此.collection.each(myItem)…进行迭代,正如Ed所建议的那样,该解决方案看起来比下划线解决方案更干净,但即使项目在那里,它也不会呈现视图中的任何项目:
/*_.each(this.model.models, function (myModel) {
$(this.el).append(new MyListItemView({model:myModel}).render().el); }, this); */
this.collection.each(function(myItem){
console.log(myItem.id);
$(this.el).append(new MyListItemView({model:myItem}).render().el);
});
我在MyListItemView中查看了参数的状态,但它们都没有问题。
有什么想法吗?
谢谢Heh,我已经阅读了很多次文档和资料来源,不知怎么的,我还是错过了这个。谢谢德里克,谢谢埃德,谢谢你的回复,我学到了很多。