我拥有的内容:
我有一个编辑功能,我在其中重新渲染我的视图;
MyView = Backbone.View.extend({
edit: function (view) {
......
view.render();
}
});
出了什么问题:
有一个用例,在 edit 函数视图中可以关闭,所以我不能在编辑函数结束时调用view.render()
。
的问题: 的
如何检查编辑功能中是否已关闭视图?类似的东西:
MyView = Backbone.View.extend({
edit: function (view) {
......
if (!view.isClosed())
view.render();
}
});
对于@ net.uk.sweet:
我使用Bootstrap X-Editable。借助它,我可以修改测试字段。要修改文本字段,我只需要单击它,更改值,然后单击它外部(文本字段之外)。在这种情况下,方法成功将被调用。
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();
}
});
}
另外值得一提的是,用户可以通过点击关闭按钮或点击视图外来关闭视图。
问题用例:
在这种情况下会发生什么:
两个动作:
view.render()
,但不得!要点:
如果视图已关闭,我需要检查成功方法内部。
粗略解决方案:
似乎我找到了一些解决方案,当然不是最好的解决方案。
if ($(view.el).hasClass('in'))
view.render();
答案 0 :(得分:1)
MyView = Backbone.View.extend({
initialize : function() {
this.setClosed(false);
},
setClosed : function(booleanValue) {
this.closed = booleanValue;
},
getClosed : function() {
return this.closed;
},
edit: function () {
var view = this;
//......
if (!view.getClosed()) {
view.render();
}
}
});