javascript - 具有属性双向绑定(bind)的 polymer 自定义元素

标签 javascript polymer

我有一个 polymer 元素来显示和设置评级(1-5 星),但我无法使其在显示给定评级值并传播回该值的意义上发挥作用,即,在点击其中一颗星星时更改 {{item. rating}} 。可能是什么问题?

我使用这样的元素,它不会改变item. rating:

<yp-rating rating="{{item.rating}}"></yp-rating>

使用纸张输入,它的工作原理:

<paper-input value="{{item.rating}}" label="Rating"></paper-input>

元素本身在这里:

<dom-module id="yp-rating">
    <template>
        <style is="custom-style">
        iron-icon {
            --iron-icon-fill-color: lightgray;
        }
        </style>

        <iron-icon th:title="#{rating1}" icon="{{star(rating, 1)}}" on-tap="setStar" data-s="1"></iron-icon>
        <iron-icon th:title="#{rating2}" icon="{{star(rating, 2)}}" on-tap="setStar" data-s="2"></iron-icon>
        <iron-icon th:title="#{rating3}" icon="{{star(rating, 3)}}" on-tap="setStar" data-s="3"></iron-icon>
        <iron-icon th:title="#{rating4}" icon="{{star(rating, 4)}}" on-tap="setStar" data-s="4"></iron-icon>
        <iron-icon th:title="#{rating5}" icon="{{star(rating, 5)}}" on-tap="setStar" data-s="5"></iron-icon>

    </template>
    <script type="text/javascript">
        Polymer({
            is : "yp-rating",
            properties: {
                rating: String,
                notify: true
                //readOnly: false,
                //reflectToAttribute: true
            },
            star: function(r, l) {
                return (this.rating && this.rating >= l) ? "star" : "star-border";
            },
            setStar: function(e) {
                this.rating = e.target.getAttribute("data-s");
                console.log("Rating set to " + this.rating);
                e.stopPropagation();
            }
        });
    </script>
</dom-module>

最佳答案

您的 rating 属性未正确声明。您已声明两个属性: ratingnotify,但您可能想在 rating 上设置 notify: true > 属性(property)。

更改此:

properties: {
  rating: String,
  notify: true
}

对此:

properties: {
  rating: {
    type: String,
    notify: true
  }
}

参见demo

关于javascript - 具有属性双向绑定(bind)的 polymer 自定义元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45109528/

相关文章:

javascript - 将一个对象放入数组,然后将另一个对象插入数组

css - Polymer paper-element 中的样式化 html 是否可能?

javascript - 获取模板内单选按钮的值

javascript - 可缩放圆形包装 - 父级未定义

javascript - 使用 Apps Script API 的 Chrome 应用

javascript - 我的 jQuery Ajax 无法与 PHP 配合使用

javascript - Angular 动态表格内联编辑

css - paper-toolbar 的 Dropshadow 覆盖 paper-dialog

polymer - 同一 polymer 元素的多个实例会导致所有这些元素的行为

javascript - POST 400(错误请求) polymer 应用程序