我不确定这是否可行,但我有一个应用程序没有做我想要的。首先,它显示从数据库到面板的餐馆列表。
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'});
}
由于
埃里克
答案 0 :(得分:2)
如果我理解正确,你正在寻找:
这一切都是真的吗?
如果是,我会在你的列表事件处理程序中抛出一个条件,它将检查元素上的类或ID(最简单/最轻量级),并在找到它之后,让它采取不同的操作,例如,转到下一页。有点像jQuery.live()或其他委托。如果您需要我详细说明,请告诉我。
如果不是,我会说看看我的3号;按钮绝对必须在列表中吗?如果它与每个项目相关联,那么我们会做一件事,但如果没有,我们会想做另一件事。所以我需要先知道,在我完全回答之前。如果必须在那里,请参见上文。如果它不必在列表中,那么我将把它从列表中取出并将其声明为新组件。从那里你应该能够在配置中指定一个处理程序,比如
items: { xtype: 'button', handler: goAwesomePlaces }
其中goAwesomePlaces
是您的处理程序。
答案 1 :(得分:1)
您可以使用Ext.List的onItemDisclosure选项:
http://docs.sencha.com/touch/1-1/#!/api/Ext.List-cfg-onItemDisclosure
在用户界面/列表/披露下的Sencha Touch Kitchen Sink中进行了演示:
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);
}
});
答案 2 :(得分: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>'
);
希望这是有道理的。
答案 3 :(得分:-1)
也许你可以使用类似的东西:
onclick="javascript:selectRestaurant(\'{Id}\');"
在图像上的div或(我曾经做过的)并具有全局函数selectRestaurant
Id
将是一个唯一标识餐厅的数据库字段。