如你所知,wp_localize_script()
允许从PHP对象创建JavaScript对象。
因此,在运行下面示例中的代码之后:
wp_localize_script(\'my-script\', \'var_name\', $var); // This works
我们将以一个名为
var_name
可在脚本中访问的
my-script
. 此JavaScript变量是从原始PHP变量复制而来的
$var
.
目前一切正常。我面临的问题是:我喜欢能够分配var_name
到JavaScript命名空间;在下面的示例中,在对象内部namespace_name
wp_localize_script(\'my-script\', \'namespace_name.var_name\', $var); // This does not work
但我做不到,而且
wp_localize_script()
在web控制台中引发以下错误:
SyntaxError: unexpected token: \'.\'
有没有一种方法可以让我使用wp_localize_script()
使用JavaScript命名空间?
Note: 我正在传递一个名称空间,因为我喜欢将所有JavaScript数据保存在一个对象中,以防止命名冲突并减少混乱。
最合适的回答,由SO网友:Jacob Peattie 整理而成
这条路wp_localize_script()
应该用于将第二个参数用作您的命名空间。然后放置一个数组作为值的第三个参数:
wp_localize_script(
\'my-script\',
\'namespace_name\',
array(
\'var_name\' => $var,
)
);
现在,您可以使用访问脚本中的变量
namespace_name.var_name
.
如果您还在脚本中使用名称空间,而不是初始化对象,请检索WordPress创建的对象(如果缺少,则返回到新对象)并添加到其中:
var namespace_name = window.namespace_name || {};
namespace_name.new_var = \'Hello world!\';