2011-03-23 65 views
0

我不確定這是否可能,但我有一個應用程序沒有按照我的要求做。首先它將數據庫中的餐館列表顯示到面板中。如何添加按鈕到tpl

tpl: [ 
    '<tpl for=".">', 
     '<div="my_div"><h2>{restaurant_name}</h2></div>', 
    '</tpl>' 
] 

這工作正常,並給我一個我的餐廳的列表。現在出現這個問題。我想添加一個按鈕,讓「my_div」點擊另一個面板。我可以使用停靠物品做到這一點,但這種想法不起作用,因爲您可以點擊任何餐廳並獲取他們的信息。

我想我需要以某種方式調用一個事件處理程序(我可以從一個停靠項目工作)。我基本上堅持如何將一個按鈕添加到模板,並且sencha幫助對此主題沒有用處。

我的事件處理程序是這樣的:

var restaurantListHandler = function(button,event){ 
    mainPanel.setActiveItem(restaurantList, {type: 'slide', direction: 'right'}); 
} 

感謝

埃裏克

回答

-1

也許你可以使用類似:

onclick="javascript:selectRestaurant(\'{Id}\');" 

的股利或(什麼我曾經做過)在圖像上,並具有全局功能selectRestaurant
Id然後將是唯一標識餐廳的數據庫字段。

+0

-1用於goto-markers('javascript:')的錯用和使用突出的js。 – scheffield 2013-09-12 11:38:30

2

如果我理解正確的話,你正在尋找:

  1. 一個按鈕添加到您的模板
  2. 事件處理程序綁定到該按鈕是一個比你不同列表項必綁定到
  3. 該按鈕必須在列表本身內;它不可能是一個單獨的一塊
  4. 按鈕的事件處理程序必須將其路由到一個新的頁面,而不是這是它的兄弟姐妹其他列表項的動作

是這一切是真的嗎?

如果是的話,我會在你的列表事件處理程序中引入一個條件來檢查元素上的類或ID(以最簡單/最輕量級爲準),並找到它後,讓它採取不同的動作,例如,轉到您的下一頁。有點像jQuery.live()或其他代表。讓我知道你是否需要我詳細說明。

如果不是,我會說看看我的3號;按鈕是否必須在列表中?如果它與每個項目相關,那麼我們會做一件事,但如果沒有,我們會想做另一件事。因此,在我能夠完全回答之前,我首先需要了解這一點。如果它必須在那裏,請參閱上文。如果它不一定在列表中,那麼我會將它從列表中取出並聲明爲新組件。從那裏,你應該能夠在配置到指定的處理程序,像

items: { xtype: 'button', handler: goAwesomePlaces } 

其中goAwesomePlaces是你的處理器。

1

您可以使用選項onItemDisclosure of Ext。清單:

http://docs.sencha.com/touch/1-1/#!/api/Ext.List-cfg-onItemDisclosure

的演示是在煎茶觸摸廚房水槽下,用戶界面/列表/披露:

http://dev.sencha.com/deploy/touch/examples/kitchensink/

var serviceList = new Ext.List({ 
      id: 'servicelist', 
      blockRefresh: true, 
      pinHeaders: false, 
      itemTpl: serviceTemplate, 
      grouped: true, 
      indexBar: false, 
      singleSelect: true, 
      allowDeselect: false, 
      showAnimation: 'slide', 
      store: serviceStore, 
      emptyText: L10N[lang].msg.no_services, 
      multiSelect: false, 
      itemCls: 'servicemain', 
      cls: 'background', 
      onItemDisclosure: function(record, btn, index) { 
      Ext.Msg.alert('Service', 'Name: ' + record.get('service'), Ext.emptyFn); 
     } 
    }); 
0

如果你想這樣的事情: 名單每個項目上都有一個按鈕。那麼這裏是我的執行相同

var asListItemTpl = new Ext.XTemplate(
           '<tpl for=".">', 
           '<div class="sb-section-title">{label}</div>', 
           '<div class="as-button"><input type="button" id="btn{id}" value="btn{id}" width="12px"> </div>', 
           '</tpl>' 
          ); 

希望這是有道理的。