私が持っているもの:
ビューを再レンダリングする編集機能があります。
MyView = Backbone.View.extend({
edit: function (view) {
......
view.render();
}
});
なんて問題:
編集機能ビューを閉じることができるユースケースがあるため、編集view.render()
機能の最後に呼び出してはなりません。
質問:
編集機能内でビューが既に閉じられているかどうかを確認する方法は? 何かのようなもの:
MyView = Backbone.View.extend({
edit: function (view) {
......
if (!view.isClosed())
view.render();
}
});
@net.uk.sweet の場合:
Bootstrap X-Editable を使用しています。それの助けを借りて、テストフィールドを変更できます。テキスト フィールドを変更するには、それをクリックして値を変更し、その外側 (テキスト フィールドの外側) をクリックするだけです。このような場合、メソッドsuccessが呼び出されます。
textEditor: function(view) {
$(this).editable({
type: 'textarea',
mode: 'inline',
onblur: 'submit',
showbuttons: false,
inputclass: 'edit-comments-text-input',
validate: function(value) {
if (!value.trim()) {
return 'Can not be empty!';
}
},
success: function(response, newValue){
//modify the comment
comment.text = newValue.trim();
//rerender
if (!view.isClosed()) //This line is what I need, but view hasn't isClosed method ((
view.render();
}
});
}
また、閉じるボタンをクリックするか、ビューの外側をクリックすることで、ユーザーがビューを閉じることができることにも注意してください。
問題の使用例:
- ユーザーが x-editable フィールドをクリック
- テキストを変更
- 閉じるボタンをクリック
そのような場合はどうなりますか:
2 つのアクション:
- ビューは閉じられています
- を呼び出す成功
view.render()
メソッドですが、してはなりません!
概要:
ビューが閉じられている場合、成功メソッドの内部を確認する必要があります。
粗い解:
もちろん、最善の解決策ではなく、いくつかの解決策を見つけたようです。
if ($(view.el).hasClass('in'))
view.render();