Polymer元素注册前的JavaScript初始化

DoK*_*DoK 5 javascript initialization object polymer-1.0

Polymer v0.5v1.0的注册过程Polymer elements似乎有所不同.之前Polymer v1.0我们可以执行JavaScript代码index.html来初始化我们所需的所有对象Polymer elements.这是一个非常重要的细节,因为data-bindingPolymer 只有当有限的对象初始化工作正确FIRST.这意味着以下内容:

例如,如果你想绑定一个对象在Polymer element{{ }}[[ ]],对象必须在之前定义Polymer element注册!看到:

<dom-module id="my-elem">
  <template>
    <div>This should be my bounded object: <b>{{obj.name}}</b></div>
  </template>
  <script>
    Polymer({
    is: 'my-elem',
    ready: function () {
      // Global initialized object!!!
      // app.obj ==> app.obj = { name: 'Great', info: 'Additional info!!!' };
      this.obj = app.obj;
    }
    ...      
  </script>
</dom-module>
Run Code Online (Sandbox Code Playgroud)

的问题是,如果Polymer element被登记之前 app.obj被初始化(在上述的例子this.objundefined在时间Polymer element配准),然后NO通知将被执行,即使当没有更新提供app.objNOT undefined以后.

因此,在这样的情况下,我们需要首先初始化所有有界对象之前,我们可以使用它们{{ }}[[ ]].

我们的做法完全错了吗?有什么建议???

age*_*tmr 0

我有类似的情况,但工作时不用担心异步。只需明确定义属性就可以了。

properties: {
  obj: {
    type: Object,
    value: {}
  }
}
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请尝试指定observer并定义一个正确处理该问题的函数obj

properties: {
  obj: {
    type: Object,
    value: {},
    observer: 'loaded'
  }
}
Run Code Online (Sandbox Code Playgroud)