fre*_*ent 5 javascript parameters jquery triggers function
我有一个JSON字符串,其中包含我需要调用的函数.
我的JSON看起来像这样:
{
"type":"listview",
// the function I would like to call
"content":"dynoData.getRetailers()",
"custom_classes":["","nMT pickList","",""],
"lib":"static_listview.html",
"tmp":"tmp_listview_inset",
"lang":"locale_search",
...
Run Code Online (Sandbox Code Playgroud)
我正在使用它在客户端上组装jQuery Mobile列表视图.要获取动态数据,我需要调用dynoData.getRetailers().
但是我很难打电话:-)
这就是我正在尝试的:
var dyn = $.parseJSON( passed_JSON_string ),
content = dyn.content;
Run Code Online (Sandbox Code Playgroud)
我希望调用它会触发函数,但它只是将函数名称作为字符串返回.
问题:
如何触发实际功能?
谢谢!
编辑:
我将JSON字符串放在实际页面上的HTML元素上,我将替换为我正在构建的元素.这是HTML:
<ul data-template="true" data-config='{
"type":"listview",
"content":"dynoData.getRetailers()",
"custom_classes":["","nMT pickList","",""],
"lib":"static_listview.html",
"tmp":"tmp_listview_inset",
"lang":"locale_search",
"theme":"c",
"filter":"true"
}'></ul>
Run Code Online (Sandbox Code Playgroud)
我可以把所有这些都归入data-属性,但那会很混乱......
解决方案:这有效:
1)将JSON更改为:
..."method":"getRetailers", ...
Run Code Online (Sandbox Code Playgroud)
2)从Javascript调用:
content = dynoData[ dyn.method ]();
Run Code Online (Sandbox Code Playgroud)
感谢大家!
假设函数始终是dyn对象的一部分,您可以使用以下符号来调用函数:
dyn['dynoData']['getRetailers']();
Run Code Online (Sandbox Code Playgroud)
所以,如果你能够调整json,你可以发回一些类似的东西:
"content":{ "mainObject": "dynoData" , "method" :"getRetailers"}
Run Code Online (Sandbox Code Playgroud)
并使用变量将其转换为动态函数:
dyn[content.mainObject][content.method]();
Run Code Online (Sandbox Code Playgroud)
作为使用jQuery的示例,请尝试使用以下命令:
$('div')['hide']();
Run Code Online (Sandbox Code Playgroud)
这与以下相同:
$('div').hide()
Run Code Online (Sandbox Code Playgroud)