我在ExtJS 3.4中使用MessageBox组件时出现此问题,我正拼命寻找解决方案。
function supprimerCatalogPreEnregFunction() {
Ext.Msg.show({
msg: document.getElementById('confirmDeleteMessage').value,
buttons: Ext.Msg.YESNO,
icon: Ext.MessageBox.ERROR,
fn : function (btn) {
if (btn == 'yes') {
document.getElementById('deleteForm:deleteCatalogPreEnreg').onclick();
}
}
});
}
问题是我的btn返回值1,而不是我所期望的'是'或'否'。它让我发疯,因为我尝试了很多解决方案而我无法理解为什么会这样。
此函数是新Ext.Button的处理程序。 该按钮是新Ext.Panel的一部分,按钮:[...]。
我无法理解为什么按钮具有那种奇怪的价值而且它让我很沮丧。 丢失的逗号可以产生这种行为吗?虽然,我没有找到一个丢失的逗号。
L.E:
我已经研究了更多,我在代码中更仔细地查看,并且在调试器的帮助下,我发现了我的功能
function (btn){}
接收位置0的参数:值1,第二个位置接收Window(我的当前位置),第三个参数是我的组件应该接收的参数,它看起来像[“是”,“ “,对象{}]等 我认为这是我需要的论点,其中第0位是我的btn的值,但我不知道其他参数来自哪里知道我需要做什么才能使它工作。
由于我仍然有点困惑,我将通过对我如何实现此处理程序的一般解释来更新此内容。
所以,在Ext.onReady我加载一个函数init()
然后,在这个函数中,我做了一个 var deleteButton = new Ext.Button
这个按钮有一个处理程序,这是我的问题
的初始功能
使用按钮将 deleteButton添加到新的Ext.Panel:[deleteButton等]
此面板作为项目添加到 Ext.TabPanel
最后,TabPanel被添加到ViewPort中。
答案 0 :(得分:1)
Sencha Documentation显示的实现如下:
// Prompt for user data and process the result using a callback:
Ext.Msg.prompt('Name', 'Please enter your name:', function(btn, text){
if (btn == 'ok'){
// process text value and close...
}
});
使用ExtJs 3.4运行以下代码:
Ext.onReady(function(){
Ext.BLANK_IMAGE_URL = '/js/ext-3.4.0/resources/images/default/s.gif';
Ext.Msg.show({
msg: "test",
buttons: Ext.Msg.YESNO,
icon: Ext.MessageBox.ERROR,
fn : function (btn, text) {
if (btn == 'yes') {
console.log(btn, text);
}
}
});
});
输出(Firebug控制台):
是(空字符串)
所以你的代码应该正常工作。我会检查是否有任何全局覆盖被加载并单独测试
答案 1 :(得分:0)
查看source似乎第一个参数是点击的按钮(Ext.Msg.YESNO
,它可能会给你一个真实的结果),但传递的第二个参数是你要查找的文本值:< / p>
var handleButton = function(button){
buttons[button].blur();
if(dlg.isVisible()){
dlg.hide();
handleHide();
//here the arguments are button, activeTextEl.dom.value and opt... so look at the second argument in your callback
Ext.callback(opt.fn, opt.scope||window, [button, activeTextEl.dom.value, opt], 1);
}
};
我会尝试将您的代码更改为:
function (btn, btnTxt) {
if (btnTxt == 'yes') {
document.getElementById('deleteForm:deleteCatalogPreEnreg').onclick();
}
}
答案 2 :(得分:0)
首先,非常感谢您的回复 似乎问题来自于我在jsf页面中包含它的脚本 这搞砸了我的部分代码,这就是为什么我的组件有一个奇怪的行为 我解决了这个问题,删除了那个脚本并让我最初发布它的功能。