Back Ground :我正在使用sencha touch 2处理MVC应用程序。我正在处理一个有两个选项卡的页面。在第一个标签内,我在标题栏中有一个按钮。
问题:我无法通过按钮处理程序调用任何其他函数。我认为,调用函数的范围存在问题。
这是我的代码。
Ext.define('WUPOC.view.WUHomePage', {
extend: 'Ext.TabPanel',
requires:['Ext.TitleBar','Ext.dataview.List','Ext.data.proxy.JsonP'],
alias: 'widget.wuHomePageView',
config: {
fullscreen: true,
defaults: {
styleHtmlContent: true
},
items: [{
title: 'Home',
iconCls: 'home',
items: [{
xtype: 'titlebar',
title: 'Hello',
docked: 'top',
items: [{
xtype: 'button',
text: 'LogOut',
ui: 'action',
itemId: 'newButton',
align: 'right',
handler : function(btn){
console.log('LogOut is tapped'); // This is printed
this.up.onNewButtonTap(); // Throws error
}
}],
}],
}, {
title: 'Contact',
iconCls: 'user',
html: 'Contact Screen'
}]
},
onNewButtonTap: function () {
alert('newNoteCommand');
},
});
我收到如下错误。
Uncaught TypeError: Object function (selector) {
var result = this.parent;
if (selector) {
for (; result; result = result.parent) {
if (Ext.ComponentQuery.is(result, selector)) {
return result;
}
}
}
return result;
} has no method 'onNewButtonTap'
我认为设置按钮的范围存在问题。请帮助。
谢谢
答案 0 :(得分:4)
首先,up
是一个函数,所以你需要这样调用它:
this.up();
然后this.up()
只会带来按钮的容器,该按钮没有方法onNewButtonTap
。你可以继续做(),直到你得到正确的组件,但这将更加聪明:
this.up('myXType').onNewButtonTap();
希望这有帮助