强制性的'我整天都在研究这个问题,即将跳出窗外等等。'
我正在研究Sencha Touch 2应用程序。在当前视图中,我想禁用在人员单击并在元素内拖动时滚动的功能。这个元素是画布的画布,所以显然我不希望页面在绘制时上下移动!
忍受我,我对Sencha很新。
以下是代码的基本概要:
Ext.define('App.view.Canvas', {
extend: "Ext.Panel",
id: "panel",
alias: "widget.canvas",
requires: ['Ext.ux.Fileup'],
config: {
styleHtmlContent: true,
scrollable: true,
tpl:"<!-- a bunch of html -->"+
"<div id='canvasDiv'></div>"+
"<!-- more html -->",
items: [{
xtype: "toolbar",
title: "Canvas",
docked: "top",
}],
listeners: [{
some listeners
}, {
event: "show",
fn: "onShow",
}],
},
onShow: function() {
// where I am trying to change the scrollable bit
},
});
现在我已经尝试了以下内容:
我认为这个不起作用,因为我混合jquery和extjs ......它在正确的时间触发,但显示此错误:
未捕获TypeError:对象[object Object]没有方法'setScrollable'
onShow: function () {
// #canvasSignature is the id of the canvas that is loaded in the controller and placed in #canvasDiv
$("#canvasSignature").mousedown(function() {
Ext.get('panel').setScrollable(false); //attempting to reference panel
}).bind('mouseup mouseleave', function() {
Ext.get('panel').setScrollable(true); //attempting to reference panel
});
}
然后我尝试了这个,但基于控制台错误(TypeError:无法读取未定义的属性'fn')我认为我使用get()的方式存在问题
onShow: function () {
Ext.get("canvasSignature").on({
dragstart: Ext.get('panel').setScrollable(false),
dragend: Ext.get('panel').setScrollable(true),
});
},
如果他们满足基本需求,我会对其他黑客(某些方式在'mousedown'等设置静态位置)开放。在一天结束时,我只需要在用户在#canvasSignature元素中拖动手指时不移动屏幕。
提前谢谢!
答案 0 :(得分:1)
而不是使用返回DOM元素而不是Sencha组件的Ext.get()
,您可能只想引用视图本身,它将具有setScrollable()
。
onShow: function () {
var me = this;
// #canvasSignature is the id of the canvas that is loaded in the controller and placed in #canvasDiv
$("#canvasSignature").mousedown(function() {
me.setScrollable(false); //attempting to reference panel
}).bind('mouseup mouseleave', function() {
me.setScrollable(true); //attempting to reference panel
});
}
您还可以覆盖Panel
的{{1}}方法,而不需要附加监听器。
initialize()