javascript - 使用数据绑定(bind)时声明的属性被多次初始化

标签 javascript html data-binding polymer web-component

polymer v1.2.3


我遇到了 Polymer 的问题,我不确定这是否是一个错误。

我有这个属性,我需要在 ready 回调中对其执行某些操作后将其设置为 null,但是似乎当我通过数据绑定(bind)初始化该属性时,该属性会重新设置-在我将其设置为空后初始化。

看下面的例子:

proxy-elm.html

<dom-module id="proxy-elm">
  <template>
    <x-foo it="[[prox]]"></x-foo>
  </template>
  <script>
    Polymer({
      is: 'proxy-elm',
      properties: {
        prox: String
      }
    });
  </script>
</dom-module>

x-foo.html

<dom-module id="x-foo">
  <template>
    <div>...</div>
  </template>
  <script>
    Polymer({
      is: 'x-foo',
      properties: {
        it: String
      },
      ready: function () {
        //some processing stuff
        console.log(this.it);
        this.it = '';
        setTimeout(function () {
          console.log("later -- " + this.it);
        }.bind(this), 3000);
      }
    });
  </script>
</dom-module>

Main.html

<proxy-elm prox="hi"></proxy-elm>

控制台

=>hi
=>
=>later -- hi

此问题仅在代理元素使用数据绑定(bind)时发生。如果我将代理元素设置为立即数,则控制台如下所示:

=>hi
=>
=> later -- 

这是期望的行为。


这是怎么回事?我要疯了!

最佳答案

这可能是由于初始化顺序造成的(参见 Documentation )

您可以尝试在代理的 ready() 函数中根据需要设置 x-foo 的值,如下所示:

<dom-module id="proxy-elm">
  <template>
    <x-foo id="xFoo" it="[[prox]]"></x-foo>
  </template>
  <script>
    Polymer({
      is: 'proxy-elm',
      properties: {
        prox: String
      },
      ready: function () {
        this.$.xFoo.it = '';
      }
    });
  </script>
</dom-module>

并保留x-fooready()函数用于您的具体处理!

关于javascript - 使用数据绑定(bind)时声明的属性被多次初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33861697/

相关文章:

javascript - 需要编码作业方面的帮助!如何停止我的 if else 语句,使其只运行一次

javascript - 如何让这个 HTML5 canvas 脚本全屏显示?

javascript - 单击元素 jQuery 时获取父表单类

javascript - Tippy.js 在 IE 11 中产生不良影响

javascript - 如何在使用 AJAX 获取的 javascript 中打印 JSON 值

jquery - jCarousel 的 CSS 问题 - 根本无法解决

html - 将 div 定位在底部内联

c# - 为操作绑定(bind) Listview SelectedItems

c# - 多个 ComboBox.DisplayMemberPath 选项?

wpf - 如何从 wpf 表单 View 模型访问用户控件中的组合框文本?