Jim*_*uis 4 html jquery backbone.js
我试图在select选项标签视图上强制'multiple'='multiple'属性,这是一个使用带有attr函数的jQuery选择器的Backbone视图,但我似乎无法使它工作.这是我的代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
根本不工作.任何想法或任何其他方式围绕这个?我是否最好只使用选择多个标记创建一个新视图,然后将myListItemView对象附加到它?
谢谢一群,吉米
Der*_*ley 10
您可以使用'attributes'属性为视图的标记提供任何所需的属性:
Backbone.View.extend({
tagName: "select",
attributes: {
"multiple": "multiple"
}
});
Run Code Online (Sandbox Code Playgroud)
可能,这不起作用的原因是你的视图还没有附加到DOM,所以$(".mySelect")没有找到节点.
如果你想在视图中的节点上操作,比如一个render()方法,你想要使用视图el,那么Backbone中有几个帮助器可以做到这一点.
this.el - 您的视图的根节点this.$el - 视图根节点的jquery对象.this.$({some selector}) - 从根节点开始的jquery选择器.这些帮助程序将在视图节点连接到DOM之前工作(最常见的是首先创建视图的代码.
所以,你的代码,添加多个属性将是
window.MyListView = Backbone.View.extend({
tagName:'select',
className: 'mySelect',
initialize:function () {
},
render:function (eventName) {
this.$el.attr('multiple', 'multiple');
return this;
}
});
Run Code Online (Sandbox Code Playgroud)