javascript - 是否可以将所选选项的标签动态设置为转发器字段的标签?
问题描述
Elementor 具有转发器字段类型,\Elementor\Controls_Manager::REPEATER
. 文档(https://developers.elementor.com/elementor-controls/repeater-control/)说该字段的标签可以在title_field
参数中定义:
'title_field' => '{{{ list_title }}}'
如果该字段是常规文本字段,这很好。但是,只要字段类型是可选择的,例如\Elementor\Controls_Manager::SELECT
,{{{ field_name }}}
事物(无论被称为什么)都会利用所选选项的值。这当然是合乎逻辑的,但不切实际,因为选项值通常是在编程上下文中可用的东西,而且人类阅读起来不是很愉快。
有没有办法改用标签?通过标签,如果是选择元素,我指的是所选option
标签的内部文本。
解决方案
这可能不是最复杂的解决方案,但它确实有效。<#
可以通过在括号和#>
括号之间添加javascript代码来操作密钥。
// Define the labels
$labels = [
'foo' => __('Foo'),
'bar' => __('Bar'),
];
// Convert to JSON
$labels_json = json_encode($labels);
// $this refers to the widget object; context here is the _register_controls() method
$this->add_control('meta_keys', [
'label' => __('Meta keys'),
'type' => \Elementor\Controls_Manager::REPEATER,
'title_field' => "<# "
. "let labels = $labels_json; " // Now the labels are available to the javascript
. "let label = labels[key]; "
. "#>"
. "{{{ label }}}",
'fields' => [
[
'name' => 'key',
'label' => __('Meta key'),
'type' => \Elementor\Controls_Manager::SELECT,
'options' => $labels,
'placeholder' => __('Meta key'),
'default' => __('Meta key'),
]
],
]);
推荐阅读
- javascript - 如何从按钮启动此功能?
- c++ - 在 C 或 C++ 上交换指针
- f# - 为 `[ 调用 `argv` 中定义的特定函数
]` 或动态命名要调用的函数 - iot - 如何使用物联网实验室平台以及如何选择合适的节点
- laravel-7 - Laravel 7 安装 - npm run dev 错误
- python - 当数组在Python中加起来不等于's'时,如何返回一个总和最接近整数's'的子集?
- java - 异常处理程序不能作为控制器建议
- javascript - 使用 Firebase 实时数据库 JS SDK 测试数据库连接的方法?
- react-native - 如何在 React Native/Expo 中存储/读取静态内容数据
- swift - 如何获得接受字符串或字符串数组的函数?