2010-11-03 51 views
2

我正在使用Sencha Touch製作網絡移動應用程序。我對EXTJS的工作方式並不十分熟悉。我建立了我的名單如下:加載後在Sencha Touch中更新列表項目

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' 
       } 
      } 
     }); 

所以這個完美呈現列表,正是我想要的,但我怎麼改變這種回聲$名稱的行的價值;

在初始加載時,我有一個PHP變量的值,但如果用戶改變它,我希望它改變這個值。我需要重寫整個結構嗎?

在jquery中我可以給元素一個ID然後修改它的.html內容。但我注意到,這種結構的方式我的列表項沒有任何標識選擇器,我可以用它來引用它。任何建議都會有所幫助,謝謝!

更新:所以我在這方面取得了一些進展,而不是在列表結構中回顯PHP變量,我打印了一個名爲name的Javascript變量,它最初設置爲PHP變量。我也把sink.Structure設置在一個函數中,它接受這些值,然後應該重置它們,但它不會。我已經嘗試使函數包括sink.StructureStore,因爲它似乎是什麼渲染列表(也許?這是一個猜測),也只是sink.Structure數組列表,但似乎沒有影響已設置的列表, 請幫忙!

+2

無關的一面注意:您應該使用''<?php echo addslashes($ shop); ?>''等,以避免字符串包含單引號時發生破損。 – Tomalak 2010-11-03 20:14:53

+0

好點謝謝 – 2010-11-03 20:31:19

回答

-6

我不得不說我對Sencha Touch在這方面的工作方式感到失望,它看起來列表首先被渲染並且不能被重新渲染,因爲它動態地創建了所有div的一類「x -項目清單。」我嘗試了很多方法來試圖擺脫列表並重新創建一個新的,但無濟於事。

我設法實現這個功能的唯一方法是在ID列表元素中放入一個div標籤,然後使用JQuery選擇元素並修改它的html。這是我用Sencha Touch製作的第一款應用程序,我希望它是最後一個。

我們之所以這樣做的唯一原因是因爲它與Android的兼容性,但在Android模擬器(2.2)上加載應用程序,無論如何都沒有任何頁面動畫動畫工作!另外,在Nexus One上進行了測試,它的加載速度更快,但幻燈片切換不存在。儘管Sencha還有其他幾項功能,但當涉及到網絡移動應用程序時,JQTouch肯定是我的首選。對不起,只好把我的胸部弄掉:)

+0

這是錯誤的做法。正確答案如下。默認情況下,Android上的動畫是禁用的,如果您願意,可以啓用它們,但在Android上翻譯性能較差,因此請自擔風險。 – 2010-11-06 19:12:09

+0

我仍然不得不使用jQuery的「html()」功能來更改列表中的值。我還沒有看到任何可以做到的代碼,但jQuery現在是一個解決方法。 – 2012-10-22 15:57:50

2

列表是數據綁定的。更新底層數據存儲中的數據,並且綁定到數據存儲的任何列表將自動更新其用戶界面。

+1

這是正確的答案,無視皮特的'接受'答案。 – 2011-04-10 14:27:50

+0

這並沒有解決任何問題......謝謝你的信息! – 2011-06-29 22:41:47

+0

但你的回答實際上是不正確的,我想你錯過了這一點。 – 2012-10-22 14:34:43

-2
  1. 您必須用新值更新您的Data.Store。
  2. YourList.bindStore(YourStore);
  3. 第二行代碼自動填充列表。
相關問題