I think this should rather be explained clearly in the guidelines. It is a
valuable thing when needed

On Jan 4, 2018 07:57, <[email protected]> wrote:

> Totally agree. Many developers won't know this after they finish reading
> the tutorial. It's like learning Python without being warned of the
> differences between class variables and instance variables.
> To keep a shared state across multiple same type of elements, is not a
> daily demand, but will cause potential troubles in a daily work.
>
> On Wednesday, April 12, 2017 at 5:49:07 PM UTC+2, [email protected] wrote:
>>
>> I agree fully with Toni, Polymer is designed to help make web components,
>> and I thought the idea of a web component is that is isolated.  This make
>> it easy to test and re-use etc.  If having multiple copies of an element
>> changes the behavior of it that would makes this harder to test and not
>> intuitive.  I can see people not testing multiple copies of their elements,
>> I have created 8 elements and it wasn't until my 9th one I noticed this
>> issue.  I now have to go back and double check everything.
>>
>> I would actually suggest removing the static array (object) option
>> completely, as you can simple use a parent object to handle this kind of
>> situation, and I think this would be the minority of cases anyway.
>>
>> On Sunday, October 23, 2016 at 3:59:14 PM UTC-4, Toni wrote:
>>>
>>> Although this question is a few months old, I ran into this problem just
>>> now and was not able to solve it immediately with the explanation given. So
>>> for anyone still having issues with this, here is the solution (without
>>> telling you to go anywhere else and try to find it in the documentation...):
>>>
>>> 1. By default, properties of Polymer objects are shared across all
>>> instances of the object (or, to be more precise, all references to the
>>> object, since Polymer doesn't create new instances, as in "new Element()").
>>> Basically, all properties are by default static.
>>> 2. Every property that is supposed to be individual to the specific
>>> reference, in other words, be not static, and changable without messing
>>> with any other instance/reference, has to have the field "value: function()
>>> { return []; }".
>>> 3. Example:
>>>
>>> Polymer({
>>>     is: 'txt-carousel-view',
>>>     properties: {
>>>         myOwnList: {
>>>             value: function() { return []; } // this is a non-static
>>> array, invididual and fresh for every instance
>>>         },
>>>         mySharedList: {
>>>             value: []; // this is a static array, shared with every
>>> instance array
>>>         }
>>>     }
>>> })
>>>
>>> As a Polymer newbie, I assumed that every instance of an Polymer element
>>> in HTML would be handled as a separate instance code-wise. For me, it would
>>> have been more intuitive that properties are "fresh", except I declare them
>>> explicitly to be static. (Since ES6 is moving Javascript more towards OOP,
>>> I'd like to see the Polymer team to at least consider making Polymer
>>> attributes non-static by default.)
>>>
>>> On Friday, March 18, 2016 at 4:08:59 PM UTC+1, Karl Tiedt wrote:
>>>>
>>>> Read the docs on properties and you'll see a statement about using:
>>>>
>>>> value: function() { return []; }
>>>>
>>>> In relation to arrays and objects with the appropriate change to the
>>>> function.
>>>> On Mar 18, 2016 07:42, "Rob Stone" <[email protected]> wrote:
>>>>
>>>>> I've just discovered something that is a little confusing and was
>>>>> hoping a polymer expert could explain what is going on :)
>>>>>
>>>>> I've defined an element with an array property (initialised to empty)
>>>>> with an attach method that then uses 'this.push' to add items to the 
>>>>> array.
>>>>> If I then create multiple instances of the element, in the browser 
>>>>> debugger
>>>>> it looks like the array is shared across all of these instances as each
>>>>> subsequent copy of the element seems to inherit the array values from
>>>>> previous elements. What's even more confusing is that if I create a
>>>>> dom-repeat that iterates over the array, it shows the 'correct' values for
>>>>> each instance, ie. it seems to be using an array that doesn't have
>>>>> duplicate values in it.
>>>>>
>>>>> I have a very small test project that shows this problem, however I
>>>>> haven't got anywhere to host it so cannot put a link up.
>>>>>
>>>>> Cut down code follows:
>>>>>
>>>>> <dom-module id="test-element">
>>>>>     <template>
>>>>>         <template is="dom-repeat" items="[[items]]">
>>>>>             <content></content>
>>>>>             <div>[[item]]</div>
>>>>>         </template>
>>>>>     </template>
>>>>>
>>>>>
>>>>>     <script>
>>>>>     (function () {
>>>>>         Polymer({
>>>>>             is: 'test-element',
>>>>>             properties: {
>>>>>                 items: {
>>>>>                     type: Array,
>>>>>                     value: []
>>>>>                 }
>>>>>             },
>>>>>
>>>>>
>>>>>             attached: function () {
>>>>>                 console.log('attached');
>>>>>                 this.push('items', "1");
>>>>>                 this.push('items', "2");
>>>>>                 this.push('items', "3");
>>>>>                 console.log('items=' + this.items); // The 1st
>>>>> instance of the element displays 'items=1,2,3' the 2nd displays
>>>>> 'items=1,2,3,1,2,3' !!!!
>>>>>             }
>>>>>         });
>>>>>     })();
>>>>>     </script>
>>>>> </dom-module>
>>>>>
>>>>> <!DOCTYPE html>
>>>>> <head>
>>>>>     <title>instance test</title>
>>>>>     <script src="bower_components/webcomponentsjs/webcomponents-list.
>>>>> min.js"></script>
>>>>>     <link rel="import" href="test-element.html"></link>
>>>>> </head>
>>>>> <body>
>>>>>     <test-element>One</test-element>
>>>>>     <test-element>Two</test-element>
>>>>> </body>
>>>>> </html>
>>>>>
>>>>>
>>>>>
>>>>> I'm hoping this is a simple misunderstanding on my part, but it does
>>>>> have some slightly annoying implications for a project I am working on.
>>>>>
>>>>> Rob
>>>>>
>>>>> Follow Polymer on Google+: plus.google.com/107187849809354688692
>>>>> ---
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Polymer" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/polymer-dev/6a372d9b-fc65-
>>>>> 4dd6-9a66-f6020aa39c1f%40googlegroups.com
>>>>> <https://groups.google.com/d/msgid/polymer-dev/6a372d9b-fc65-4dd6-9a66-f6020aa39c1f%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>> Follow Polymer on Google+: plus.google.com/107187849809354688692
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "Polymer" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/
> topic/polymer-dev/pa_Ak2ATRw8/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/polymer-dev/69a506c3-3898-4a64-ab17-f974e51bcfd1%40googlegroups.com
> <https://groups.google.com/d/msgid/polymer-dev/69a506c3-3898-4a64-ab17-f974e51bcfd1%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

Follow Polymer on Google+: plus.google.com/107187849809354688692
--- 
You received this message because you are subscribed to the Google Groups 
"Polymer" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/polymer-dev/CA%2Bjkkcis8n8zYF6Xvnh%3DvGkZLtaWMKDPAbO6uyRY2K2Yz6PBKw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to