Javascript 主干:检查视图是否已关闭

Javascript 主干:检查视图是否已关闭,javascript,backbone.js,backbone-views,backbone-events,x-editable,Javascript,Backbone.js,Backbone Views,Backbone Events,X Editable,我所拥有的: 我有一个编辑功能,在其中我可以重新提交我的视图 MyView = Backbone.View.extend({ edit: function (view) { ...... view.render(); } }); 真是个问题: 有一个用例可以在编辑函数期间关闭视图,因此我不能在编辑函数结束时调用view.render() 问题: 如何检查编辑功能中的视图是否已关闭?比如: MyView = Backbone.View.extend({

我所拥有的:

我有一个编辑功能,在其中我可以重新提交我的视图

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-可编辑字段
  • 更改文本
  • 单击关闭按钮
  • 这种情况下会发生什么:

    两项行动:

  • 视图已关闭
  • success方法,它调用
    view.render()
    ,但不能 摘要:

    如果视图已关闭,我需要检查成功方法的内部

    粗溶液:

    似乎我找到了一些孤独,当然不是最好的

    if ($(view.el).hasClass('in'))
       view.render();
    

    我认为这里没有足够的信息来帮助你。发布整个视图类怎么样?或者更好的方法是,在中放一个演示。请参阅我的文章的“for@net.uk.sweet”部分question@NickoleAbs将标志
    .isClosed
    保留在视图中(并在需要时进行修改)是否有问题?@net.uk.sweet标志是一种不好的做法,并且容易出错。我的视图在很多地方都是关闭的,每次我都需要重置标志。有些人可能会忘记……如果视图实例仍然可以访问,如果它没有被销毁,为什么不在视图对象本身中保留一个实例变量呢。可以使用
    view.setClosed(true)
    view.setClosed(false)
    访问它。
    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();
            }
        }
    });