让多选 jQuery 插件在 Backbone.js 应用程序中工作的魔术是什么?我尝试过使用 SumoSelect、Bootstrap-Multiselect、Chosen 和 jQuery UI 的 MultiSelect。
我有一个模型,它是集合。我在 View 的渲染方法中设置了例如 SumoSelect 插件,代码如下
render : function() {
....
// Time for DOM
setTimeout(function(){
$(".dropdown-features", this.$el).SumoSelect()
}, 100);
return this;
},
类 dropdown-features 在模板文件中定义如下
<div class="filter-header">
<strong>${title}</strong>
</div>
<div>
<select class="dropdown-features">
<option value="">Choose...</option>
</select>
</div>
</div>
模型和集合通常像在 Backbone.js 应用程序中一样定义。
MyApp.Models = MyApp.Models || {};
(function () {
'use strict';
MyApp.Models.Facet = Backbone.Model.extend({
idAttribute: "name"
});
})();
和
MyApp.Collections = MyApp.Collections || {};
(function () {
'use strict';
MyApp.Collections.Facets = Backbone.Collection.extend({
model: MyApp.Models.Facet,
initialize : function(models, options) {
if (_.isUndefined(options) ||
_.isUndefined(options.label) ||
_.isUndefined(options.title)) {
throw new Error('Label and title must be given Facets collection in initialization.');
} else {
this.label = options.label;
this.title = options.title;
}
},
getName: function() {
return this.title;
},
getLabel: function() {
return this.label;
},
getFirstLabel: function() {
return this.first().get('name');
}
});
})();
如果我使用纯 HTML Select-tag 一切正常,但是当尝试使用上面提到的插件时,我无法将任何数据放入 Select Options 中。选择小部件更改为新样式,但不包含除“选择...”之外的任何内容。
我是 Backbone.js 的新用户,我之前在 Backbone.js 应用程序中没有使用过 UI 插件。
谢谢,
麦克风