聚合物"属性改变"设置element属性时未触发事件

时间:2016-12-09 19:55:01

标签: javascript html polymer web-component custom-element

我有一个像这样声明的Polymer元素(test: { type: String, notify: true, value: 'default test value' } )属性:

default test value

如您所见,它的声明默认值为<cw-app></cw-app>

最初,当元素添加到页面时:test-changed正在触发相应的<cw-app test="new value"></cw-app>事件。

但是,如果我添加元素并为属性设置一个值,如下所示:test-changed,则最初不会触发{{1}}个事件。

这是一种理想的行为吗?它已被记录在任何地方吗?

http://jsbin.com/xazaqozani/edit?html,console,output

1 个答案:

答案 0 :(得分:2)

我会说这是预期的行为:

  • 在第一种情况下,test的值已从null(无test属性集)更改为"default test value",因此已更改事件被解雇。

  • 在第二种情况下,值在创建时设置为"new value"。它未被更改,因此没有更改事件。

在GitHub上查看关于Polymer issue page的讨论:

  

如果您声明<x-foo id="foo" value="foo"></x-foo>,则假定值foo将来自&#39;,t.i。来自元素的用户。在配置阶段,Polymer不会向上回显此类数据更改。 (假设元素的值/用户的生产者已经知道这种变化。)

     

另一方面,如果您<x-foo id="bar"></x-foo>是默认值   将向上传播。出于同样的原因,x-foo产生了这个   值,x-foo的用户对此没有任何了解。   T.I.默认值不是来自上面(但是来自x-foo)。