我有以下看法:在backbone.js中處理重新渲染視圖的最佳方法是什麼?
Main.Views.Login = EventQ.View.extend({
events: {
"submit form": "login"
},
template: "login",
login: function(e) {
var me = this;
$.ajax({
url: "/api/users/login",
type: 'POST',
dataType: "json",
data: $(e.currentTarget).serializeArray(),
success: function(data, status){
EventQ.app.router.navigate('dashboard', true);
},
error: function(xhr, status, e) {
var result = $.parseJSON(xhr.responseText);
me.render_with_errors(result.errors);
}
});
return false;
},
render: function(done) {
var me = this;
// Fetch the template, render it to the View element and call done.
EventQ.fetchTemplate(me.template, function(tmpl) {
me.el.innerHTML = tmpl(me.model.toJSON());
done(me.el);
});
},
render_with_errors: function(errors) {
var me = this;
// Fetch the template, render it to the View element and call done.
EventQ.fetchTemplate(this.template, function(tmpl) {
me.el.innerHTML = tmpl(errors);
});
}
});
和一個簡單的模板是這樣的:
<form>
<input name="username" />
<input name="password" />
<button type="submit" />
</form>
什麼,我希望做的是能夠如果返回錯誤,重新呈現模板,但保持輸入的填充。一個錯誤模板喜歡:
<form>
<input name="username" />
<label class="error">required</label>
<input name="password" />
<button type="submit" />
</form>
有沒有辦法將視圖綁定到模型或我可以檢查?現在,render_with_errors的工作原理除了我丟失了填寫在表單上的所有數據之外。
你有沒有考慮過不使用單獨的模板的錯誤?也許在你的真實情況下,模板更加不同。但在你的例子中,你可以在你的錯誤/成功處理程序中顯示/隱藏錯誤消息。甚至可以進行一些即時驗證。 – 2012-02-07 14:56:15