I次のビューがあります。このような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は、フォームに記入されたすべてのデータを失うという事実を除いて動作します。
エラーに対して別のテンプレートを使用していないと思われましたか?たぶんあなたの本当の状況では、テンプレートはより異なっています。しかし、あなたの例では、エラー/成功ハンドラにエラーメッセージを表示/非表示することしかできません。またはオンザフライでの検証でさえも。 –