使用传递的数据属性调用函数

时间:2014-08-12 13:43:51

标签: javascript jquery

我的表格如下:

<form data-controller="Posts" data-method="admin_add">

然后我想在提交表单时根据这些传递的数据属性调用一个函数。

$(document).on('submit', 'form', function(e){

    e.preventDefault(); // there is no server so nothing to submit to

    var formData = $(this).serialize();

    var controller = $(this).attr('data-controller');
    var method = $(this).attr('data-method');
    // I use .attr instead of .data because .data is funny sometimes

    var fnString = controller + '.' + method;
    var fn = window[fnString];

    if (typeof fn === "function") fn(formData);

});

这是基于我在这里阅读的内容:http://www.sitepoint.com/call-javascript-function-string-without-using-eval/

它应该叫:

Posts.admin_add(formData);

但是它没有调用函数...如果我删除if语句然后我得到一个错误,它不是一个函数......有什么想法吗?

1 个答案:

答案 0 :(得分:7)

请记住,您使用方括号来避免使用eval

var fn = window[controller][method];
fn(formData);