Javascript 事件处理函数不使用'this'关键字
为什么我不能从事件处理程序中的Javascript 事件处理函数不使用'this'关键字,javascript,angularjs,web,frontend,Javascript,Angularjs,Web,Frontend,为什么我不能从事件处理程序中的这个关键字中获取数据?如何修复 twittyApp.factory('Unshown', function () { function Unshown() { this.allIsLoaded = false; this.loading = false; this.firstTime = true; this.scrollMarker = 100; this.loadedUnshownPages = 0; this.t
这个
关键字中获取数据?如何修复
twittyApp.factory('Unshown', function () {
function Unshown() {
this.allIsLoaded = false;
this.loading = false;
this.firstTime = true;
this.scrollMarker = 100;
this.loadedUnshownPages = 0;
this.timeLineHiader = $cookies.get("lastReadedTweetId");
}
window.onscroll = function () {
//why here this.scrollMarker is undefined?
};
return Unshown;
});
这会改变吗
twittyApp.factory('Unshown', function() {
var fact = {};
function Unshown() {
this.allIsLoaded = false;
this.loading = false;
this.firstTime = true;
this.scrollMarker = 100;
this.loadedUnshownPages = 0;
this.timeLineHiader = $cookies.get("lastReadedTweetId");
}
var objUnShown = new Unshown();
window.onscroll = function() {
objUnShown.scrollMarker // aceess scrollmarker
};
fact.Unshown =objUnShown;
return fact.Unshown;
});
首先需要创建UnShown
类的对象,然后才能访问它们的属性
编辑2:
如果您想在任何时候创建对象,您可以这样做
twittyApp.factory('Unshown', function() {
var fact = {};
function Unshown() {
..
}
window.onscroll = function() {
objUnShown.scrollMarker // aceess scrollmarker
};
fact.Unshown =Unshown;
return fact;
});
/// in controller do this.
var objUnshown = new Unshown.Unshown()
通过在
unshawn
函数中使用this
关键字,可以设置该函数对象的属性。要访问函数外部的属性,请在函数对象引用上使用属性访问器
twittyApp.factory('Unshown', function () {
function Unshown() {
this.allIsLoaded = false;
this.loading = false;
this.firstTime = true;
this.scrollMarker = 100;
this.loadedUnshownPages = 0;
this.timeLineHiader = $cookies.get("lastReadedTweetId");
}
window.onscroll = function () {
//this.scrollMarker is undefined
//
//Use property accessor
console.log(Unshown.scrollMarker);
};
return Unshown;
});
在AngularJS中使用
window.onscroll
使用window.onscroll
是最有效的方法
在AngularJS中,使用添加事件侦听器
确保将
$window
添加到工厂函数的可注入项列表中。将window.onscroll放在unshawn函数中如何访问onscroll中的这个.scrollMarker?'var scrold。。。。。。。如果(this.scrollMarker>scrolled&&!this.loading&&&!this.allIsLoaded){this.loading=true;}不是真的,您不必创建一个unshawn对象,只需跟踪“this”变量即可。就这些了,请贴上标签error@riyaj-khan您的解决方案是有效的,这是一个解决方案,但我在其他控制器的not构造函数中得到了另一个未经验证的结果Unshown(),但这不是问题。谢谢你,祝你好运!Oo,现在这个处理程序可以在每个页面上工作,它不好,它在登录页面中被压碎,之后就不能在主页上工作了。这个事实
对象的意义是什么?
var windowElem = angular.element($window);
windowElem.on('scroll', function scrollListener (event) {
console.log(event);
};