画布被清除时,添加数据存储在Sencha触摸列表
Canvas getting cleared when adding data to store in Sencha Touch List
我有一个Sencha Touch Ext.List,它有一个html5画布。每当我向存储中添加任何项目时,canvas元素就会丢失。
参考这个小提琴:-https://fiddle.sencha.com/fiddle/74i/
有没有办法在不影响画布的情况下动态地将记录添加到Ext.List中?
这个问题是由于sencha touch 2.3.1 +版本的一个错误。这里的解决方法是在Ext.List中添加一个刷新监听器事件,以便在每次更新存储时重新绘制画布。
修改如下:
Ext.application({
name: 'Fiddle',
launch: function() {
}
});
Ext.define('Contact', {
extend: 'Ext.data.Model',
config: {
idProperty: 'firstName',
fields: ['firstName', 'lastName']
}
});
Ext.define('Contacts', {
extend: 'Ext.data.Store',
config: {
model: 'Contact',
storeId: 'Contacts',
data: [{
firstName: 'Tommy',
lastName: 'Maintz'
}, {
firstName: 'Rob',
lastName: 'Dougan'
}, {
firstName: 'Ed',
lastName: 'Spencer'
}, {
firstName: 'Jamie',
lastName: 'Avins'
}]
}
});
var store = Ext.create('Contacts');
Ext.create('Ext.List', {
fullscreen: true,
itemTpl: '<div> <div class="contact">{firstName} <strong>{lastName}</strong></div>' + '<div> <canvas class = "drawCanvas" id="{firstName}" width="200" height="100" "> <div>' + '</div>',
store: 'Contacts',
listeners: {
'refresh': function(cmp) {
console.log('calling refresh');
var canvasArray = cmp.element.dom.getElementsByClassName('drawCanvas');
Ext.Array.each(canvasArray, function(canvas, index) {
var ctx = canvas.getContext("2d");
ctx.fillStyle = "#FF0000";
ctx.fillRect(0, 0, 150, 75);
});
},
'initialize': function(cmp) {
console.log('calling initialize');
cmp.getStore().on('addrecords', function(store, records, eOpts) {
var c = document.getElementById(records[0].data.firstName);
var ctx = c.getContext("2d");
ctx.fillStyle = "#FF0000";
ctx.fillRect(0, 0, 150, 75);
});
var canvasArray = cmp.element.dom.getElementsByClassName('drawCanvas');
Ext.Array.each(canvasArray, function(canvas, index) {
var ctx = canvas.getContext("2d");
ctx.fillStyle = "#FF0000";
ctx.fillRect(0, 0, 150, 75);
});
},
'select': function(cmp, record, eOpts) {
console.log('select');
var store = cmp.getStore();
var no = Math.round(Math.random() * 100);
var name = 'te' + no;
store.add({
firstName: no,
lastName: 'Maintz'
});
cmp.refresh();
}
}
});
相关文章:
- 更新sencha touch 2中的存储记录值
- Sencha Touch - 存储包含数组的 JSON 文件
- Sencha Touch 2.0 动态更改数据存储附加参数
- Sencha touch 2-自定义组件开发数据项未从存储加载值
- Sencha Touch-本地存储问题
- 获取sencha touch中本地存储javascript文件的属性
- 如何让sencha触摸存储来附加数据
- 如何覆盖Sencha Touch数据存储代理异常侦听器
- 数据存储中的值没有在sencha中填充
- 在mousedown - Sencha ExtJs中存储变量的问题
- Sencha触摸存储过滤器号码
- Sencha手动触摸负载存储
- 在sencha touch 1.1中加载要存储的复杂对象
- 如何在Sencha Touch / PhoneGap中存储本地数据
- 使用Sencha Touch,我如何将数据存储在JSON文件中
- Sencha Touch:获取数据存储json数据到selectfield
- Sencha touch -如何在面板的initcomponent函数中使用数据存储
- 画布被清除时,添加数据存储在Sencha触摸列表
- Sencha Touch:采用多重滤镜存储
- sencha touch同步存储性能问题