如果这是重复,我道歉。我已经尝试为这个确切的问题寻找解决方案,但无法提出任何建议。
这里我有一个Object文字:
var Facets = {
searchresults: {},
init: function() {
$('.class').on("click", function(e){
e.preventDefault();
Facets.searchAll();
Facets.getFacets();
});
},
searchAll: function(){
// Some ajax code
this.searchresults = data;
},
getFacets: function(){
$('.somenode').each(function(){
var url = this.makeURL(somedata);
});
},
makeURL: function(){
// creates URL
}
};
Facets.init();
问题是当方法getFacets
调用this.makeURL
时,我收到错误。我不完全确定为什么,因为我认为对getFacets
的调用具有Facets
对象的上下文。
我理解的方式是,当触发事件处理程序时,它具有window
的上下文。因此,我调用Facets.getFacets
和Facets.searchAll
,以便这些函数知道要调用的内容。但我知道我不能正确理解......
我也尝试Facets.getFacets().call(this)
来获取正确的上下文,但这不起作用。
答案 0 :(得分:1)
您可以捕获这样的范围:
var Facets = {
searchresults: {},
init: function() {
$('.class').on("click", function(e){
e.preventDefault();
Facets.searchAll();
Facets.getFacets();
});
},
searchAll: function(){
// Some ajax code
this.searchresults = data;
},
getFacets: function(){
var self = this;
$('.somenode').each(function(){
var url = self.makeURL(somedata);
});
},
makeURL: function(){
// creates URL
}
};
Facets.init();