0

我有的:

我有一个编辑功能,可以在其中重新呈现我的视图;

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。在它的帮助下,我可以修改测试字段。要修改文本字段,我只需要单击它,更改值,然后单击它的外部(文本字段外部)。在这种情况下,将调用方法成功。

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();
                }
            });
}

另外值得一提的是,用户可以通过单击关闭按钮或单击视图外来关闭视图。

问题用例:

  1. 用户单击 x-editable 字段
  2. 更改文本
  3. 点击关闭按钮

在这种情况下会发生什么:

两个动作:

  1. 视图已关闭
  2. 成功方法,它调用view.render(),但绝不能!

概括:

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

粗解:

似乎我找到了一些解决方案,当然不是最好的解决方案。

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

1 回答 1

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();
        }
    }
});
于 2013-11-13T15:12:06.037 回答