从Javascript设置时,Polymer属性不会更新

时间:2017-12-15 13:33:36

标签: data-binding polymer-2.x

我做了这个简单的属性(Polymer 2.x):

data2

我尝试在单击按钮时调用的函数中使用static get properties() { return { bpm: { type: Number, value: () => { return 0 }, observer: "_bpm" } } } 更新它。如果我使用this.bpm = 60;输出值,则显示正确的值,但我的标题console.log(this.bpm);未更新,并且未调用观察者。
当使用<h2 id="bpm">[[bpm]]</h2>之类的内容设置bpm时,它会起作用。

我做错了什么?谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

社区将更容易知道这个问题已在请求的评论中得到解答。

初始问题:绑定值未更新,因为bpm属性是从元素外部的函数设置的。

更正:这里有一个工作JSFiddle(在chrome中使用),用于演示如何使用绑定。

答案 1 :(得分:0)

由于从不同的功能设置属性,我也遇到了类似的问题。把它放在这里供参考。

我的代码:

Polymer({
    is: 'test-test',
    properties: {
        min: {
            type: Number,
            value: -1,
            observer: '_minChangedd'
        }
    },

    _minChangedd: function (val) {
        console.log(val);
    },

    ready: function () {
        setInterval(function () {
            this.min = this.min + 1;
        }, 500);
    },
});

问题:

setInterval函数有自己的this,因此表达式this.min实际上是指min的{​​{1}}。

使用箭头功能解决了问题,将呼叫替换为setInterval