我在从 twig 覆盖我的 JS 插件选项时遇到问题。也许有人可以帮助我。 我的 Js 插件选项如下所示:
static options = {
configurator: {
startTabIndex: 0,
startModel: null,
responsive: {
xs: {
startTabIndex: 1,
startModel: 1
},
sm: {
startTabIndex: 1,
startModel: 1
},
md: {
startTabIndex: 1,
startModel: 1
},
lg: {},
xl: {},
xxl: {},
},
}
}
我正在尝试从我的模板中覆盖这些选项。
{% set configuratorOptions = {
configurator: {
startTabIndex: 1,
startModel: 10,
responsive: {
xs: {},
sm: {},
md: {},
lg: {},
xl: {},
xxl: {},
},
}
} %}
data-product-configurator-options="{{ configuratorOptions|json_encode }}
值
startTabIndex
和 startModel
工作正常。但我想清空响应设置,如上面的示例所示。选项合并后,我的选项看起来像这样并且无法正常工作。我想是因为类型从对象切换到数组?!
{
"configurator": {
"startTabIndex": 1,
"startModel": 10,
"responsive": {
"0": [],
"576": [],
"768": [],
"992": [],
"1200": [],
"undefined": []
}
}
}
getSettings 函数不适用于此。有人知道如何防止类型切换吗?
当我用值覆盖响应式设置时,我可以工作
有效
{% set configuratorOptions = {
configurator: {
startTabIndex: 1,
startModel: 10,
responsive: {
sm: {
startTabIndex: 123,
startModel: 123,
},
},
}
} %}
但我无法清空它们
不工作
{% set configuratorOptions = {
configurator: {
startTabIndex: 1,
startModel: 10,
responsive: {
sm: {},
},
}
} %}
您可以通过将以下值
JSON_FORCE_OBJECT
传递给 flag
函数的 json_encode
参数来解决此问题
{% set configuratorOptions = {
configurator: {
startTabIndex: 1,
startModel: 10,
responsive: {
xs: {},
sm: {},
md: {},
lg: {},
xl: {},
xxl: {},
},
}
} %}
{{ configuratorOptions|json_encode(constant('JSON_FORCE_OBJECT'))|raw }}
参考文献