【问题标题】:Polymer 3 Data Binding not updating on property setPolymer 3 数据绑定未在属性集上更新
【发布时间】:2019-02-10 14:07:32
【问题描述】:

我有一个 Polymer 3 模块(以下简化/错误仅用于解释);

import {html,PolymerElement} from '@polymer/polymer/polymer-element.js';
class myInput extends PolymerElement {

    static get template() {
        return html `
            <input id="inputBox" value='{{bar::input}}'/><br/>
            <a>You have typed [[bar]]!</a>
        `;
    }

    static get properties() {
        return {
            bar: {
            observer: '_dataChanged',
        },
    }

    _dataChanged () {
        this.bar = "BAR HAS CHANGED!!"
    }
}

[[bar]] 已成功更新并显示在页面上。

{{bar::input}} 成功触发_dataChanged

但是当_dataChanged() 被触发时,[[bar]] 不会更新并在页面上显示"BAR HAS CHANGED!!"

知道我做错了什么吗?

感谢您的帮助。

【问题讨论】:

  • 你试过用 {{bar}} 替换 {{bar::input}} 吗?
  • @Cy Walker ,你如何调用_clickMe() 函数。 ?

标签: polymer-3.x


【解决方案1】:

使用其中一种聚合物按钮元素。然后您可以轻松地将值绑定到bar 属性。这里是例子:

DEMO

import { PolymerElement, html } from '@polymer/polymer';
import '@polymer/paper-button/paper-button.js'

class MyElement extends PolymerElement {
    static get properties() {
        return {
            bar: {
            observer: '_dataChanged',
        }
    }}

  static get template() {
    return html`
            <input id="inputBox" value='{{bar::input}}'/><br/>
            <paper-button on-tap="_clickMe">You have typed [[bar]]!</paper-button>
        `;
  }

    _dataChanged(d){console.log(d)}
    _clickMe () {
        this.bar = "CLICKED!!"
    }

}
customElements.define('my-element', MyElement);

【讨论】:

  • 感谢 HakanC - 这让我更仔细地了解了我在做什么和错误。这实际上是由于另一个进口(未在示例中提供)导致问题,而不是聚合物问题。干杯。
猜你喜欢
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多