我有一个Ext
obj,包含2个pdf文件。当渲染这些文件时,我想检查用户是否在下载文件之前登录。我以为我可以通过onclick
属性实现这一点,但代码会在加载页面后立即运行,并且会立即显示消息。
function download(url) {
if (hasRights(url)) {
//window.open(url, '_blank', 'height=480,width=640,resizable=yes,scrollbars=yes,toolbar=yes,location=yes', false);
return true;
} else {
if (checkLoggedIn()) {
Ext.MessageBox.alert('Insufficient Rights');
}
}
return false;
}
var treeObj = [];
treeObj.push({text: 'Ex 1', leaf:true, href:download('/ex.pdf'), cls:'tree-pdf'});
treeObj.push({text: 'Ex 2', leaf:true, href:download('/ex2.pdf'), cls:'tree-pdf'});
如何在extjs
答案 0 :(得分:0)
这个问题并不是特定于extjs。
使用函数作为成员定义对象的方式不正确。如果要将函数定义为对象的成员,则不能像以前那样直接调用它。您有两种选择:
首先将函数保存到变量中,并将其传递给bind
的网址:
var downloadFn = function (url) {
if (hasRights(url)) {
(...)
};
treeObj.push({text: 'Ex 1', leaf:true, href:downloadFn.bind(null, '/ex.pdf'), cls:'tree-pdf'});
创建一个调用原始函数的新函数:
function download(url) {
(...)
}
treeObj.push({text: 'Ex 1', leaf:true, href:function () {
download('/ex.pdf')
} , cls:'tree-pdf'});