Polymer 具有默认值的聚合对象属性

Polymer 具有默认值的聚合对象属性,polymer,Polymer,我想在我的自定义元素中设置一个选项对象属性,当用户未提供时,该属性将采用默认值 <!DOCTYPE html> <html> <head> <script src="bower_components/platform/platform.js"></script> <link rel="import" href="bower_components/polymer/polymer.html"> </head

我想在我的自定义元素中设置一个选项对象属性,当用户未提供时,该属性将采用默认值

<!DOCTYPE html>
<html>
<head>
    <script src="bower_components/platform/platform.js"></script>
    <link rel="import" href="bower_components/polymer/polymer.html">
</head>
<body>
    <my-element options="{{{
                option_1: 'val1',
                option_2: 'val2',
                allow_this: true,
                allow_that: false
            }}}">
    </my-element>
</body>
</html>

<polymer-element name="my-element" attributes="options">
    <template>
        <ul>
            <!-- ... -->
        </ul>
    </template>

    <script>
        Polymer('my-element', {
            options: {
                option_1: 'default_val1',
                option_2: 'default_val2',
                allow_this: false,
                allow_that: false
            }
        });
    </script>

</polymer-element>

聚合物(“my-element”{ 选项:{ 选项1:“默认值1”, 选项2:“默认值2”, 允许你这样说:错, 允许你说:错 } });

上面的代码不能作为元素构造函数中指定的值工作,它总是覆盖我试图传递的值。如何设置它,使选项值设置为传入的值,而默认值仅用作备用值?

数据绑定在聚合元素之外不起作用。使用或将my元素的用法包装在另一个自定义聚合元素中

但是,您将得到选项表达式的解析错误。您需要在对象大括号周围放置空格:
options=“{{{{…}}}”


您还应该检查Polymer文档中关于初始化数组和对象属性的部分中的警告。

您可以使用属性中的JSON将对象值传递到发布的属性中,但它必须是严格有效的JSON()

在这种情况下,请尝试:

<my-element options='{
            "option_1": "val1",
            "option_2": "val2",
            "allow_this": true,
            "allow_that": false
        }'>
</my-element>

请注意属性上的单引号,以及JSON本身内部的双引号。JSON规范需要双引号


请注意,这不是数据绑定,因此它不使用mustache表示法
{{}
。相反,您只是在一个属性中描述一个字符串值,Polymer将反序列化(
JSON.parse
)到一个对象中。

如何将
绑定作为值
options='{“option\u 1”:“[[ajax.response]]”传递给
?如果在组件中将其初始化为:
options:{}