【问题标题】:Polymer bind data through javascript string?聚合物通过javascript字符串绑定数据?
【发布时间】:2014-03-17 21:21:53
【问题描述】:

我想知道如何执行以下操作:

<polymer-element name="x-foo" attributes="foo">
  <template>
    <div id="content"></div>
  </template>
  <script>
    Polymer('x-foo', {
      foo: true,
      ready: function() {
        this.$.content.insertAdjacentHTML('beforeend', '<x-bar foo="'+this.foo+'"></x-bar>');
      }
    });
  </script>
</polymer-element>

所以this.foo 是数据绑定的,如果x-foo&lt;x-foo foo="{{foo}}"&gt;&lt;/x-foo&gt; 那样实现,对foo 属性的更改将受到影响?

【问题讨论】:

    标签: javascript data-binding polymer


    【解决方案1】:

    很遗憾没有。如果您没有使用foo={{foo}},那么您没有使用数据绑定系统。调用insertAdjacentHTML 的字面结果是:

    <div id="content">
      <x-bar foo="true" id="xbar"></x-bar>
    </div>
    

    这是静态标记。 this.foo 的任何未来更改都不会传播到 x-bar,除非您手动更新它:

    fooChanged: function() {
      this.$.content.firstElementChild.foo = this.foo;
    },
    update: function() {
      this.foo = Math.random();
    }
    

    但这带来了另一个不便。通常,可以使用自动节点查找来引用x-bar.foo (this.$.xbar)。相反,必须使用 DOM 遍历 (this.$.content.firstElementChild),因为该元素是在 Polymer 完成设置之后才添加的。

    【讨论】:

    • 谢谢。从 ajax 请求中获取一些数据后,我试图动态插入聚合物元素。
    猜你喜欢
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多