我在Sencha Touch 2项目中有一个按钮。按钮在被按下后随视图一起销毁,并在另一个按钮被按下后重新生成。
但该按钮无法再次获得侦听器。
侦听器是在视图的控制器中构建的。
Ext.application({
name: 'App',
controllers: ['Main','Home'],
views: ['Main','Home'],
launch: function () {Ext.Viewport.add({xtype:'mainview'});}
});控制器
Ext.define('App.controller.Home', {extend: 'Ext.app.Controller',
config: {
refs: {homeView: '#homeview',backBtn: '#btn_test1'},
control: {
backBtn: {
tap: function(backBtn){
console.log('[Controller][Home] btn monatsrate - - tap');
Ext.Viewport.add({xtype: 'mainview'});
Ext.Viewport.setActiveItem(1);
}
},
homeView: {
deactivate: function (homeView){
console.log('[Controller][Home] autodestroy homeview');
//homeView.destroy();
Ext.Viewport.remove(homeView);
}
}
}
},
});和视图
Ext.define("App.view.Main", {
extend:"Ext.Container",
xtype:"mainview",
config:{
id:'mainview',
items:[
{
xtype:'button',
id:'btn_test2',
text: 'test2'
}
]
},});
你知道怎么让按钮让监听器回来吗?
发布于 2012-05-07 01:15:50
这是因为控制器中的" ref“使用按钮的id来创建ref。相反,请为您的按钮使用不同的选择器。例如,你可以给你的按钮一个"name“属性,并给它一个值"testbutton”。那么你的裁判就会像这样
refs: {homeView: '#homeview',backBtn: 'button[name=testbutton]'},对于在整个应用程序流程中多次创建/销毁的按钮和列表项,我也遇到了同样的问题。从那时起,我已经读过几次,一般来说,Sencha Touch团队建议不要使用id作为选择器,除非您有特定的原因。上面的"name“方法对我来说非常有效。您还可以使用许多其他css样式的选择器(您必须单独阅读)。
正如在前面的评论中提到的,我会接受一些答案,以增加在未来获得您问题的答案的可能性。我之所以回答这个问题,是因为我在这个问题上撞了4个小时。
发布于 2012-05-17 03:06:42
Sencha的例子建议在按钮上使用action config,比如'cancel','goHome','createPost‘等。这就说得通了。
然后,所有引用的格式为: myContainer buttonaction=myAction
发布于 2012-05-15 22:13:02
我相信你的问题就是id参数。如果你添加了任何id,你应该确保它是唯一的,因此添加一个id到你的自定义视图的配置中将导致创建一个以上的实例!我可能不是100%正确的(可能在一个容器中,但我相信它无论如何都会引起问题),但是你为什么那么想要一个id呢?此外,您还可以简单地通过xtype引用视图:
refs: {homeView: 'homeview',backBtn: 'btn_test1'},致以敬意,
https://stackoverflow.com/questions/9851819
复制相似问题