【问题标题】:Backbone event context not keeping current state骨干事件上下文不保持当前状态
【发布时间】:2013-07-15 16:03:00
【问题描述】:

我使用主干事件将上下文(视图对象)绑定到事件处理程序,这有点工作,但问题是在初始化方法中设置的任何属性似乎都没有跟随事件发生时的上下文被触发。下面的代码说明了这个问题:

   define(['backbone'], function( Backbone ) {

        var PageView = Backbone.View.extend({

            /* Globals */
            pageExist: false,

            initialize: function( options ) {
                var self = this;
                self.pageExist = true;

                // _mediator is passed during instantition of the view
                // I've removed the code here as it's not relevant for this problem
                self._mediator.on("pin:add", self._pinAddCB, self);

                // Using bindAll seems a little bit better as the context now carries the aditional method that i added on this view ( like _pinAddCB ) 
                _.bindAll();

            },


            _pinAddCB: function( ) {
                console.log(this.pageExist ) // FALSE ??
            }
        });

        return PageView;
    });

关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: backbone.js require


    【解决方案1】:

    您是否尝试过示例中的代码是如何工作的?因为它应该可以正常工作。

    1. _.bindAll(); 导致最新版本下划线出错。
    2. 可能pageExist被其他方法修改了。

    【讨论】:

    • 1 - 我尝试过使用和不使用 _.bindAll,它似乎更接近它,​​没有它,上下文就是视图,但我添加到它的方法似乎并不遵循当使用 bindAll 他们做 2-pageExist 只在这个模块中使用,除了我还有其他属性也设置在初始化方法和相同的行为那里。
    • 是的,确实,我刚刚发现了问题,很奇怪,视图使用的是未保存的模型,我正在对其调用同步,不知何故它以一种非常非常奇怪的方式搞砸了主干......我只是将其更改为保存,现在它可以正常工作了。感谢您的帮助
    • 希望先弄清楚哪里出了问题,可能在那儿偶然发现了一个错误,如果不确定我会接受它
    猜你喜欢
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多