加载后在Sencha Touch中更新列表项

时间:2010-11-03 20:09:43

标签: javascript sencha-touch

我正在使用Sencha Touch制作网络移动应用。我对EXTJS的工作方式并不是很熟悉。我设置了这样的列表:

sink.Structure = [{
        text: 'Name'
    },
    {
        text: '&nbsp;&nbsp;&nbsp;<?php echo $name; ?>'
    },
    {
        text: 'Friend'
    },
    {
        text: '&nbsp;&nbsp;&nbsp;<?php echo $friend; ?>'
    },
    {
        text: 'Shop'
    },
    {
        text: '&nbsp;&nbsp;&nbsp;<?php echo $shop; ?>'
    }];

            Ext.regModel('Demo', {
            fields: [
                {name: 'text',        type: 'string'},
                {name: 'source',      type: 'string'},
                {name: 'preventHide', type: 'boolean'},
                {name: 'animation'},
                {name: 'card'}
            ]
        });

        sink.StructureStore = new Ext.data.TreeStore({
            model: 'Demo',
            root: {
                items: sink.Structure
            },
            proxy: {
                type: 'ajax',
                reader: {
                    type: 'tree',
                    root: 'items'
                }
            }
        });

所以这会完美地呈现列表,正是我想要的但是如何更改echos $ name的行的值;

在初始加载时,我在PHP变量中有值,但如果用户更改它,我希望它改变它的值。我需要重写整个结构吗?

在Jquery中,我可以给元素一个ID然后改变它的.html内容。但我注意到这个结构的方式我的列表项没有任何识别选择器,我可以用它来引用它。任何建议都会有所帮助,谢谢!

更新:所以我在这方面取得了一些进展,而不是在列表结构中回显PHP变量,我打印了一个名为name的Javascript变量,该变量最初设置为PHP变量。我也把sink.Structure设置在一个函数中,该函数接收值然后应该重置它们,但事实并非如此。我已经尝试使函数包括sink.StructureStore,因为它似乎是什么呈现列表(也许?这是一个猜测),也只是sink.Structure数组列表,但似乎没有任何东西影响已经设置的列表,请帮忙!

3 个答案:

答案 0 :(得分:2)

列表是数据绑定的。更新基础数据存储中的数据,绑定到数据存储的任何列表将自动更新其用户界面。

答案 1 :(得分:-2)

  1. 您必须使用新值更新Data.Store。
  2. YourList.bindStore(YourStore);
  3. 第二行代码会自动填充列表。

答案 2 :(得分:-6)

我不得不说我对Sencha Touch在这方面的工作方式感到失望,看起来列表是在第一次加载时渲染的,无法重新渲染,因为它动态创建所有div的类似于“x-”项目清单。”我已经尝试了许多方法来试图摆脱列表并重新创建一个新的但无济于事。

我设法使其工作的唯一方法是在带有id的list元素中放入div标签,然后使用JQuery选择元素并更改它的html。这是我用Sencha Touch制作的第一个应用程序,我希望它是最后一个。

我们采用这种方式的唯一原因是因为它与Android的兼容性,但是在Android模拟器(2.2)上加载应用程序无论如何都没有任何页面动画制作工作!此外,在Nexus One上进行了测试,它加载速度更快,但没有滑动过渡。尽管Sencha还有一些功能,但对于网络移动应用来说,JQTouch肯定是我的首选。对不起,只是不得不把它从胸前拿走:)。