polymer - Computed property isn't recomputed when array dependency is mutated -


i'm using computed property items dom-repeat.

<template is="dom-repeat" items="{{double(values)}}">   <span>{{item}}</span> </template> 

when dependency values changes, property isn't recomputed.

addvalue: function() {   this.push('values', this.values.length+1);   this.async(this.addvalue, 1000); }, 

if, instead of mutating values, set new array, work:

this.set('values', this.values.concat(this.values.length+1)) 

is bug or expected behavior?

demo: http://plnkr.co/edit/smahkmhhspwgmbhbbzav?p=preview

i spoke scott miles, member of team behind polymer, , got back:

in order computed property bind properly, must use [[double(values.*)]].

the parameter passed double function object properties path, value, , base, in path observation.

  • path refer path string specifies if length or splices updated in array,
  • value value of length or splices, and
  • base refer array.

example:

<template is="dom-repeat" items="[[double(values.*)]]">   <span>[[item]]</span> </template>  <script>   ...   double: function(e) {     return e.base.map(function(n) { return n*2; });   } 

docs: https://www.polymer-project.org/1.0/docs/devguide/properties.html#array-observation

demo: http://plnkr.co/edit/idrz5xvln9sz35ir8pgt?p=preview

a dom-repeat template expects working collection, , when bind values directly, knows keep tabs on items in values.

computed properties not have such expectations, , [[double(values)]] doesn't work in case because update when values reference changes, not when items in array change. using values.* lets polymer know should update computed property binding when array's contents mutated.


i wouldn't post here in scott's stead if not for

sjmiles: @vartan: otoh, if transcribe learned, me, time least elastic resource


Comments

Popular posts from this blog

Magento/PHP - Get phones on all members in a customer group -

php - .htaccess mod_rewrite for dynamic url which has domain names -

Website Login Issue developed in magento -