我正在尝试Backbone.StickIt插件data-binding
,我的问题是在初始渲染上我显示模型默认值name
和email
. 如果我只在联系表单中输入我的姓名,姓名和电子邮件都会重新呈现,如何只设置输入的值?因此,如果电子邮件值 === '' 不设置/呈现这个?
小提琴:http: //jsfiddle.net/kyllle/e6z7gbta/
JS
var FormView = Backbone.View.extend({
template: _.template( $('.js-form-template').html() ),
events: {
'submit': 'onFormSubmit'
},
render: function() {
this.$el.html( this.template( this.model.toJSON() ) );
return this;
},
onFormSubmit: function(event) {
event.preventDefault();
var nameValue = this.$('input[id=name]').val(),
emailValue = this.$('input[id=email]').val();
this.model.set({
'name': nameValue,
'email': emailValue
});
}
});
var UserView = Backbone.View.extend({
bindings: {
'.js-name': 'name',
'.js-email': 'email'
},
template: _.template( $('.js-user-template').html() ),
render: function() {
this.$el.html( this.template( this.model.toJSON() ) );
this.stickit();
return this;
}
});
模板
<script type="text/template" class="js-user-template">
<h1>User Details</h1>
<p>Name: <span class="js-name"><%= name %></span></p>
<p>Email: <span class="js-email"><%= email %></span></p>
</script>
<script type="text/template" class="js-form-template">
<h1>Contact Form</h1>
<form action="/">
<fieldset>
<label for="name">Name</label>
<input type="text" id="name" class="form-text" />
</fieldset>
<fieldset>
<label for="email">Email</label>
<input type="email" id="email" class="form-text" />
</fieldset>
<fieldset class="form-actions">
<input type="submit" value="Submit" />
</fieldset>
</form>
</script>