<template is="dom-repeat" items="{{double(values)}}"> <span>{{item}}</span> </template>
当其依赖项值更改时,不会重新计算该属性.
addValue: function() { this.push('values',this.values.length+1); this.async(this.addValue,1000); },
如果我将其设置为新数组,而不是改变值,它确实有效:
this.set('values',this.values.concat(this.values.length+1))
为了使计算属性正确绑定,必须使用[[double(values.*)]].
传递给double函数的参数将是具有属性path,value和base的对象,就像路径观察一样.
> path将引用一个路径字符串,指定数组中是否更新了长度或接头,
> value将是length或splices的值,和
> base将引用您的数组.
例:
<template is="dom-repeat" items="[[double(values.*)]]"> <span>[[item]]</span> </template> <script> ... double: function(e) { return e.base.map(function(n) { return n*2; }); }
文件:https://www.polymer-project.org/1.0/docs/devguide/properties.html#array-observation
演示:http://plnkr.co/edit/Idrz5XvLn9SZ35iR8pGT?p=preview
dom-repeat模板期望使用集合,因此当您直接将其绑定到值时,它知道要在值中标记项目.
计算属性没有任何这样的期望,因此[[double(values)]]在这种情况下不起作用,因为它只会在值引用自身更改时更新,而不是在数组中的项更改时更新.使用values.*让polymer知道它应该在数组的内容发生变化时更新计算属性绑定.
如果不是的话,我不会在斯科特这里发布这个
sjmiles: @vartan: otoh,if you Could transcribe what you learned,it would help me,time is my least elastic resource
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。