Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干:维护对';这';对于回调中的模型_Javascript_Backbone.js_This_Underscore.js - Fatal编程技术网

Javascript 主干:维护对';这';对于回调中的模型

Javascript 主干:维护对';这';对于回调中的模型,javascript,backbone.js,this,underscore.js,Javascript,Backbone.js,This,Underscore.js,通常的.bindAll(this,…)方法在这里不起作用,因为我从未将此模型初始化为实例。有什么想法吗?谢谢。您可以手工完成: var JavascriptHelper = Backbone.Model.extend("JavascriptHelper", {}, // never initialized as an instance { myFn: function() { $('.selector').l

通常的
.bindAll(this,…)
方法在这里不起作用,因为我从未将此模型初始化为实例。有什么想法吗?谢谢。

您可以手工完成:

var JavascriptHelper = Backbone.Model.extend("JavascriptHelper",
        {}, // never initialized as an instance
        {
            myFn: function() {
                $('.selector').live('click', function() {
                    this.anotherFn(); // FAIL!
                });
            },

            anotherFn: function() {
                alert('This is never called from myFn()');
            }
        }
    );
或者,如果
另一个fn
不关心调用
this
时它是什么(或者如果它希望
this
成为
live
使用的内容):

顺便说一句,它已被弃用,取而代之的是。另外,如果您没有实例化JavascriptHelper,那么为什么它是一个主干.Model呢?为什么不使用简单的对象文字:

myFn: function() {
    $('.selector').live('click', JavascriptHelper.anotherFn);
}
你期望这个构造是什么:

var JavascriptHelper = {
    myFn: function() {
        //...
    },
    anotherFn: function() {
        //...
    }
};
将您留在
JavascriptHelper
中?扩展字符串很奇怪,但将三个参数传递给主干.Model.extend是没有意义的。如果需要静态属性,则应将其作为以下内容传递:


不管主干的内部工作方式如何(我不熟悉),
this.anotherFn()
不会引用具有.myFn和.anotherFn属性的对象,而是指向传递给事件处理程序的DOM元素jQuery。尝试
var=this,然后在处理程序内部使用
that.anotherFn()
,这应该可以工作(除非主干显式地将扩展对象绑定到其他对象,这将是不幸的)对于混淆,我深表歉意,我实际上在使用Parse,但不想让人感到困惑,所以我将它改为Backbone.Model from Parse.Object,以便人们更容易理解(Parse是Backbone的扩展)。好建议!我正在将所有助手更改为对象文字。谢谢!
var JavascriptHelper = {
    myFn: function() {
        //...
    },
    anotherFn: function() {
        //...
    }
};
var JavascriptHelper = Backbone.Model.extend(string, {}, {...})
var JavascriptHelper = Backbone.Model.extend({}, { myFn: ... });