Javascript 闪电组件及;window.addEventListener()
我试图检测设备何时改变其方向,并更新我的组件以反映新的方向 我的方法的问题是,我的事件存在于组件生命周期之外,这反过来使组件变量未定义,从而使事件中的代码完全无用 任何对我能做些什么来实现这一目标有一些见解的人都会很好Javascript 闪电组件及;window.addEventListener(),javascript,salesforce,salesforce-lightning,Javascript,Salesforce,Salesforce Lightning,我试图检测设备何时改变其方向,并更新我的组件以反映新的方向 我的方法的问题是,我的事件存在于组件生命周期之外,这反过来使组件变量未定义,从而使事件中的代码完全无用 任何对我能做些什么来实现这一目标有一些见解的人都会很好 afterRender: function(component,helper){ this.superAfterRender(); window.addEventListener("orientationchange", function() {
afterRender: function(component,helper){
this.superAfterRender();
window.addEventListener("orientationchange", function() {
window.setTimeout(function(){
if(window.innerWidth <= 768) {
component.set('v.deviceWidth','small');
} else if(window.innerWidth > 768 && window.innerWidth < 1440) {
component.set('v.deviceWidth','medium');
} else if(window.innerWidth >= 1440) {
component.set('v.deviceWidth','large');
}
},500);
});
}
afterRender:函数(组件、助手){
this.superAfterRender();
addEventListener(“方向更改”,函数(){
setTimeout(函数(){
如果(window.innerWidth 768&&window.innerWidth<1440){
组件集('v.deviceWidth','medium');
}否则如果(window.innerWidth>=1440){
set('v.deviceWidth','large');
}
},500);
});
}
适合您的好解决方案:
示例如下:
只需创建主题,然后:
const sub = new Rx.Subject();
window.addEventListener("orientationchange", function() {
sub.next(window.innerWidth)
});
在组件中:
sub.subscribe((value)=>{
if(value <= 768) {
c.set('v.deviceWidth','small');
} else if(value > 768 && value < 1440) {
c.set('v.deviceWidth','medium');
} else if(value >= 1440) {
c.set('v.deviceWidth','large');
}
})
sub.subscribe((值)=>{
如果(值768&&value<1440){
c、 设置('v.deviceWidth','medium');
}否则如果(值>=1440){
c、 设置('v.deviceWidth','large');
}
})
并且不要忘记在组件将被销毁时取消订阅强>