Mootools Request.JSON动态回调

时间:2012-02-10 17:35:33

标签: javascript mootools

开发一个应用程序,其中所有表格数据都作为对象返回。

某些单元格上会有onclick事件。

JSON对象恢复正常,对象调用'cb'中有一个键。

这是由服务器上的逻辑设置的。

我的问题是对象键cb将包含一个字符串,如何在不使用eval()的情况下将其作为有效函数运行

示例:

var archive = function() {
    console.log('archiving');   
}

new Request.JSON ({
    ...
    onSuccess: function(r){
        //r.cb: 'archive'
        docuemnt.id(td).addEvent('click', r.cb);
    }
    ...
});

docuemnt.id(td).addEvent('click',eval(r.cb)); //寻找替代方案

我知道我在想这个并不应该那么困难。 今天一定还没有足够的咖啡。

1 个答案:

答案 0 :(得分:3)

使用方括号表示法。如果您的函数在全局范围内,请使用window[r.cb]

new Request.JSON ({ 
    ... 
    onSuccess: function(r) { 
        //r.cb: 'archive' 
        document.id(td).addEvent('click', window[r.cb]);
    } 
    ... 
}); 

如果您的函数不在全局范围内,请将函数移动到对象中:

var callbacks = {
    archive: function () { ... },
    foo: function () { ... },
    ...
}

然后使用callbacks[r.cb]