【问题标题】:polymer 2.0 two way binding聚合物 2.0 双向绑定
【发布时间】:2018-03-12 06:46:10
【问题描述】:

我正在尝试使用 Polymer 2.0 并且有一个简单的课程。它有一个输入文本框,在更改其内容时不响应。需要什么来反映对文本框的更改以反映为双向绑定?

类的代码如下。

<!-- Styles MUST be inside template -->
<style>
</style>

<div>
  <input type="text" id="greeting" name="greeting" value="{{greeting}}"/>
  <slot></slot>
  {{greeting}}
</div>

// Extend Polymer.Element base class
class Polymer2Class extends Polymer.Element {
  static get is() { return 'polymer-2-class' }
  static get config() {
    return {
      properties: {
        greeting: {
          type: String,
          value: "Hello",
          notify: true
          //observer: 'greetingChanged'
        }
      },
      observers: [
        'greetingChanged(greeting)'
       ]
    }
  }
  constructor() {
    super();
    console.log('created');
  }
  connectedCallback() {
    super.connectedCallback();
    console.log('attached');
  }
  ready() {
    this.addEventListener('click', (e)=>this.handleClick(e));
    this._ensureAttribute('tabIndex', 0);
    super.ready();
    console.log('ready');
  }
  greetingChanged(greeting) {
    if(greeting === undefined) {
      console.log("greetingChanged: undefined");
    } else {
      console.log("greetingChanged: " + greeting);
    }
  }
  handleClick(e) {
    console.log("hamdleClick: " + e.type);
  }

// Register custom element definition using standard platform API
customElements.define(Polymer2Class.is, Polymer2Class);

【问题讨论】:

    标签: polymer polymer-2.x


    【解决方案1】:

    我假设您希望greeting 出现在&lt;input&gt; 的下方在您输入时。您需要在&lt;input&gt;input 事件中使用two-way native binding

    <input type="text" value="{{greeting::input}}">
    

    codepen

    【讨论】:

    • 我认为值得一提的是,您也可以写{{greeting::keyup}} 而不是{{greeting::input}}。顾名思义,greeting 作用域属性将在您释放输入键时更新。
    • OP 询问 Polymer 2.0,但链接的文档是 Polymer 1.0
    • @neverendingqs 已更新以保持一致性。请注意 1.0 文档中的相关部分与 2.0 文档相同。
    猜你喜欢
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多