2011-05-23 55 views
0

好吧,我可能在這裏錯過了一些基本的東西,但我想看看是否有人能夠發現這裏出了什麼問題。我的目標是讓用戶能夠通過單擊基於Sencha的表單中的按鈕來添加新配料(通過我的配方表單中的新文本框)。Sencha - 添加新的表單域Sencha窗體使用按鈕 - 用戶激活

此外,文本域名稱(要提交)需要遞增1,以便提交到MySQL數據庫正常工作,即成分2,成分3 ...這是我迄今爲止(沒有模型),也注意我已經硬編碼領域BU有隱藏他們用於測試目的:

 var formBase = { 
     scroll: 'vertical', 
     url : 'server.php', 
     standardSubmit : false, 
     items: [ 
      { 
       xtype: 'fieldset', 
       title: 'Add Recipe', 
       ref: 'fs', 
       //instructions: 'Please enter the information above.', 
       defaults: { 
        required: true, 
        labelAlign: 'left', 
        labelWidth: '40%', 
       }, 

       items: [ 

       { 
        xtype: 'textfield', 
        name : 'name', 
        label: 'Recipe Name', 
        useClearIcon: true, 
        autoCapitalize : false 
       }, 
       { 
        xtype: 'textfield', 
        name : 'ingredients', 
        label: 'Ingredients', 
        useClearIcon: true, 
        autoCapitalize : false 
       }, 
       { 
        xtype: 'textfield', 
        name : 'ingredients2', 
        label: 'Ingredients 2', 
        useClearIcon: true, 
        autoCapitalize : false, 
        hidden: true 
       }, 
       { 
        xtype: 'textfield', 
        name : 'ingredients3', 
        label: 'Ingredients 3', 
        useClearIcon: true, 
        autoCapitalize : false, 
        hidden: true 
       }, 
       { 
        xtype: 'textfield', 
        name : 'ingredients4', 
        label: 'Ingredients 4', 
        useClearIcon: true, 
        autoCapitalize : false, 
        hidden: true 
       }, 
       { 
        xtype: 'textfield', 
        name : 'ingredients5', 
        label: 'Ingredients 5', 
        useClearIcon: true, 
        autoCapitalize : false, 
        hidden: true 
       }, 
       { 
        xtype: 'textfield', 
        name : 'ingredients6', 
        label: 'Ingredients 6', 
        useClearIcon: true, 
        autoCapitalize : false, 
        hidden: true 
       }, 
       { 
        xtype: 'textfield', 
        name : 'ingredients7', 
        label: 'Ingredients 7', 
        useClearIcon: true, 
        autoCapitalize : false, 
        hidden: true 
       }, 
       { 
        xtype: 'textfield', 
        name : 'ingredients8', 
        label: 'Ingredients 8', 
        useClearIcon: true, 
        autoCapitalize : false, 
        hidden: true 
       }, 
       { 
        xtype: 'textfield', 
        name : 'ingredients9', 
        label: 'Ingredients 9', 
        useClearIcon: true, 
        autoCapitalize : false, 
        hidden: true 
       }, 
       { 
        xtype: 'textareafield', 
        name : 'comments', 
        label: 'Comments', 
        maxLength: 50, 
        maxRows: 5, 
        height: 120 
       }, 
       { 
        xtype: 'emailfield', 
        name : 'email', 
        label: 'Email', 
        placeHolder: '[email protected]', 
        useClearIcon: true 
       }, 
       { 
           xtype:'button', 
           text: 'Add Ingredient', 
           handler: function() { 

           var p = formBase.fs.items.items + 1; 
            formBase.fs.insert(p, { 
             xtype: 'textfield', 
             name : 'ingredients', 
             label: 'Added field' 
            }); 
            formBase.fs.doLayout(); 
           }}, 

       ] 

      } 
     ], 

我收到的錯誤:遺漏的類型錯誤:無法讀取未定義

感謝的特性「項目」的任何和所有幫助! - BRR

回答

1
defaults: { 
       required: true, 
       labelAlign: 'left', 
       labelWidth: '40%', 
      }, 

那個逗號後面的labelWidth會打破它不是嗎?

+0

不,它不影響它,但感謝收穫。任何其他想法? – 2011-05-24 14:51:00

+0

有沒有更好的例子?一些隨機對象(而不是全部)使它有點難。該異常發生在哪一行(我猜它是在var p位,因爲這感覺有點奇怪,但這是猜測工作)?我不知道你是否可以只是var p = formBase.fs.items.items + 1;在對象內部,也許你正在尋找...... var p = count(formbase ....); – Alex 2011-05-25 15:56:24

+0

其實這是一個非常完整的例子 - 其餘的只是在頁面上構建其他面板。異常發生在你提到的那一行(var p ...),我相信你是正確的我需要某種計數函數。我結束了滾動我自己的功能,它觸發了一個不同的停靠按鈕;它並不漂亮,但完成了工作。如果你想看到我可以發佈它 - 這個評論太長了。 – 2011-05-25 23:13:39

0

上線p = formBase.fs.items.items + 1; 字段fs沒有被定義爲formBase變量的屬性,所以它沒有被解析(因此它是未定義的)。因此,當試圖在'fs'中引用'項目'時,您會收到錯誤。 (你正試圖引用fs中的項目,並且fs是未定義的)。