Sencha touch 2 Sencha Touch 2转盘。setItems()不工作
我正在尝试使用Sencha Architect构建一个动态图像旋转木马。我有一个旋转木马添加到选项卡面板。旋转木马被设置为从一个名为“pictureStore”的商店读取图像。我有一个从商店提取图像并创建旋转木马项目的功能-我可以从商店获取图像,但无法创建旋转木马。当我尝试使用carouself.setItems()或carousel.add()时,我得到一个错误“Object#has no method”。请看一看,让我知道如果我的方法是不正确的创建一个动态旋转木马。我感谢你的帮助和知识,如何修复 谢谢 用于读取图像和创建旋转木马项目的函数(直到下面的注释为止): 带有图像信息的JSON示例Sencha touch 2 Sencha Touch 2转盘。setItems()不工作,sencha-touch-2,sencha-architect,Sencha Touch 2,Sencha Architect,我正在尝试使用Sencha Architect构建一个动态图像旋转木马。我有一个旋转木马添加到选项卡面板。旋转木马被设置为从一个名为“pictureStore”的商店读取图像。我有一个从商店提取图像并创建旋转木马项目的功能-我可以从商店获取图像,但无法创建旋转木马。当我尝试使用carouself.setItems()或carousel.add()时,我得到一个错误“Object#has no method”。请看一看,让我知道如果我的方法是不正确的创建一个动态旋转木马。我感谢你的帮助和知识,如何
{
"test": {
"cat": {
"entries": [
{
"image": "/images/1.png"
},
{
"image": "/images/2.png"
}
]
}
}
}
使用carousel.add或carousel.setItems时出现错误消息:
Object #<HTMLDivElement> has no method 'add'
Object #<HTMLDivElement> has no method 'setItems'
Object#没有方法“add”
对象#没有方法“setItems”
如果变量carousel
没有方法add
或setItems
,那么它可能不是您的carousel
为了确保这一点,您可以尝试执行console.log(carousel)代码>以确定它到底是什么。而且,它似乎没有在代码中的任何地方声明
但修复起来很简单。我假定您已经向转盘添加了一个事件侦听器,该侦听器侦听activate
事件,如果查看,您可以看到发送到回调函数的第一个参数是容器(在本例中是转盘)
所以你要写的是:
onMycarouselActivate: function(carousel, newActiveItem, oldActiveItem, options) {
而不是这个
onMycarouselActivate: function(container, newActiveItem, oldActiveItem, options) {
你应该准备好了
编辑
另外,如果查看,您可以看到配置中没有图片
,但有一个src
属性。所以你应该写:
items.push({
xtype: 'myimage',
src: picture
});
希望这有帮助试试这段代码
myCarousel.add({
xtype: 'image',
scr:'path of image'
});
其中myCarousel是carousel的对象。您可以试试这个,这对我很有用
Ext.getStore('Pictures').load(function(pictures) {
Ext.each(pictures, function(picture) {
if (picture.get('image')) {
carousel.add({
html: '<img style="max-width: 100%; max-height: 100%;" src="' + picture.get('image') + '"/>'
});
}
});
});
Ext.getStore('Pictures')。加载(函数(图片){
Ext.each(图片、功能(图片){
if(picture.get('image')){
旋转木马({
html:'
});
}
});
});
希望这能帮助您……当您通过Architect创建侦听器时,它将容器作为第一个参数,并且除了通过Architect之外的代码之外,似乎没有其他方法来更改它。我这样做了,并且能够克服错误,但是图像仍然没有添加到旋转木马,尽管我现在在屏幕上看到了旋转木马。我遵循了这个示例,如果这对任何人都有帮助,那么它只是一个变量名,所以如果架构师将其命名为“container”,那么在代码中使用container。另请参阅我编辑的答案。再次感谢,我应用了你的更新,但仍然无法显示图像。我试图通过调用carousel.doLayout()和Ext.getCmp('carousel').doLayout()来强制更新;在setItems()之后,但获取对象#的错误时没有方法“doLayout”。我不确定问题是这个函数在ST2中不再存在了。在尝试之前请阅读文档。doLayout()具有各种渲染时间疯狂,您应该尝试永远不要使用它。
Ext.getStore('Pictures').load(function(pictures) {
Ext.each(pictures, function(picture) {
if (picture.get('image')) {
carousel.add({
html: '<img style="max-width: 100%; max-height: 100%;" src="' + picture.get('image') + '"/>'
});
}
});
});