【发布时间】:2015-10-22 21:44:23
【问题描述】:
我正在为data-binding 试用Backbone.StickIt 插件,我的问题是在初始渲染时我显示模型默认值name 和email。如果我只在联系表单中输入我的姓名,姓名和电子邮件都会重新呈现,如何只设置输入的值?那么如果 email value === '' 不设置/呈现这个?
小提琴: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>
【问题讨论】:
标签: backbone.js model backbone-views backbone-stickit