我想知道是否有更好的方法来做到这一点。
我有一些 HTML 需要附加一些事件。
问题 1:它背后没有数据、模型或集合,所以我认为不需要渲染方法?
问题 2:我假设它应该是主干中的一个视图,因为它是一个需要附加代码的 UI?
基本上我所拥有的是一个具有显示和隐藏功能的面板,它显示了一些用于保存设置的复选框。当面板关闭时,它将保存复选框的状态。
这是HTML:
<div id="panel-holder">
<div id="settings">
<ul class="settingsChecks">
<li>
<label>Display Desktop Notification Popup </label>
<input type="checkbox" id="formDisplayPopup" checked="checked"/>
</li>
<li>
<label>Play Alert Sound </label>
<input type="checkbox" id="formPlaySounds" checked="checked"/>
</li>
</ul>
</div>
</div>
因此,上面的代码使用#panel-holder 附加到视图。
这是主干代码:
var SettingsView = Backbone.View.extend({
el: '#panel-holder',
events: {
'click #click': 'toggleContent'
},
initialize: function() {
this.toggleContent();
},
showmeState: true,
toggleContent: function(){
if (this.showmeState === false) {
this.openPanel();
} else {
this.closePanel();
}
},
closePanel: function() {
this.$el.find('#settings').slideUp('fast');//Close Panel
this.$el.find('#click').text("Open Settings");//Change Text
this.showmeState = false;
this.saveSettings();
},
openPanel: function() {
this.$el.find('#settings').slideDown('fast');//Open Panel
this.$el.find('#click').text("Close Settings");//Change Text
this.showmeState = true;
},
saveSettings: function() {
//when the panel closes get the states of the checkboxes and save them
}
});
问题 3:我应该在打开和关闭面板区域中使用 jQuery .find('') 吗?是否有更好的方法将功能附加到这些元素。
问题4:这段代码和我对Backbone Views的理解可以吗?我偏离轨道了吗?