Ext.bind

valid38 2014-12-19 12:27:39

var onConfirmDelete = function(answer, value, cfg, button) {
if (answer != 'yes') {
return;
}

var menu = button.up(),
node = menu.treeNode;

node.remove(true);
};
var onDelete = function(button) {
var callback = Ext.bind(onConfirmDelete, undefined, [button], true);
Ext.Msg.confirm(
'Approve deletion',
'Are you sure you want to delete this node?',
callback
);
};

这里onDelete是右键菜单里的一项,右键菜单有crud操作

var buildCtxMenu = function() {
return Ext.create('Ext.menu.Menu', {
items : [
{
itemId : 'add',
handler : onAdd
},
{
itemId : 'edit',
handler : onEdit
},
{
itemId : 'delete',
handler : onDelete
}
]
});
};



这个Ext.bind看api第三个参数是
args : Array (optional)

Overrides arguments for the call. (Defaults to the arguments passed by the caller)
是不是说我写个[buuton1,button2,button3]
那么点击这三个按钮都会触发这个ext.bind返回的函数。
为什么没有定义是什么动作 比如 click或 doubleclick?
再者,
itemId : 'delete',
handler : onDelete
本身点击右键删除菜单时就会触发onDelete,再在onDelete里面弹出一个确认窗口不就结了,为什么还要再把它包装成一个新的函数?
直接这样:

Ext.Msg.confirm(
'Approve deletion',
'Are you sure you want to delete this node?',
onConfirmDelete
);


就是说不包装 用ext.bind包装前的函数不是一样?(ext.bind的第一个参数)

最后,Ext.bink第二个参数好像是说什么scope的,scope具体指的啥?
...全文
130 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
valid38 2014-12-22
  • 打赏
  • 举报
回复
引用 1 楼 u011514731 的回复:
scope 指作用域
那前面的一个问题呢? bind之前和bind之后的两个函数有什么区别?bind的作用是干啥的?如上代码直接用bind之前的函数onDelete不行吗?
波儸密 2014-12-19
  • 打赏
  • 举报
回复
scope 指作用域

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧