Re: Web Component Element definition

You can use `polymer-dev@googlegroups.com` for polymer questions.

But the answer is the same. For less confusion, make the prototype first,
however you want, *then* register it.

if (this !== window) {
  var prototype = {
      "readyCallback": function() {}
  };
  Object.defineProperties(prototype, {
    "foox": {
      "value": function() {
        alert('d');
      },
    }
  });
  this.register(prototype);
}


On Sun, Jun 23, 2013 at 12:38 PM, Bronislav Klučka <
Bronislav.Klucka@bauglir.com> wrote:

>  Hi,
>
> I actually came across this issue while using Polymer's platform.js...
> I could not make it work...
>
> I have to do magic like this...
> <element name="x-bauglir-listitem" constructor="XBauglirListItem">
>   <script>
>     if (this !== window)
>     {
>       var first = true;
>       this.register({
>         prototype: {
>           "readyCallback": function() {
>
>
>             if (first)
>             {
>               Object.defineProperties(XBauglirListItem.prototype, {
>                 "foox": {
>                   "value": function() {
>                     alert('d');
>                   },
>                 }
>               });
>             }
>             first = false;
>           },
>
>         }
>       });
>     }
>   </script>
> </element>
> putting the definition outside readyCallback caused unknown XBauglirListItem
> error
>
> so I'm wondering how it's gonna be in web Components... since the
> mechanism is the same... until readyCallback i called, the construstor
> function does not exists I assume
>
> -------------------
>  ({
>   readyCallback: function() { },
>   get foo() {},
>   set foo() {}
> })
> confuses me... I 've seen the whole
> ({
> })
> contruct in web comps for the first time and I think it's web comps
> specific...
>
> and the setters and getters... from your example... are those getter and
> setters for method foo or property foo? Shouldn't setter have a parameter?
> The value that is about to be set? how do I define whether property is
> changable, enumerable?
>
> Or is this working proposition of Web Comps based on working proposition
> of ES6?
>
> Brona
>
>
> On 23.6.2013 21:11, Scott Miles wrote:
>
>  To be clear, this question doesn't really have anything to do with the
> components spec. The bottom line from the spec is that the completion-value
> of the script should reference an object that will be used as the element
> prototype.
>
>  How you generate that prototype is completely up to you, and there are
> many ways you can do it.  See examples below.
>
>  Fwiw, my team (http://www.polymer-project.org/) is not an advocate of
> the completion-value gambit. We are pushing for two-way initialization. In
> other words, a separate method to register the prototype.
>
>  In any case, here are examples.
>
>  You can use descriptors, but you don't need them for get/set:
>
>  ({
>   readyCallback: function() { },
>   get foo() {},
>   set foo() {}
> })
>
>  if you really want to use descriptors, you can do
>
>  Object.create(Object.prototype, {
>     property: {
>       get: function() { return 5; },
>       set: function(value) {}
>     }
> });
>
>  or you can mix and match:
>
>  var prototype = {
>   readyCallback: function() { },
> };
> Object.defineProperty(prototype, {
>   property: {
>         get: function() { return 5; },
>         set: function(value) {}
>     }
> });
>  prototype;
>
>
> On Sun, Jun 23, 2013 at 11:45 AM, Bronislav Klučka <
> Bronislav.Klucka@bauglir.com> wrote:
>
>>
>> On 23.6.2013 20:42, Bronislav Klučka wrote:
>>
>>> Hi,
>>>
>>> http://www.w3.org/TR/2013/WD-components-intro-20130606/#lifecycle-callbacks
>>> shows defining element methods, next to the life cycle it also shows
>>> definition of methods "ticks" and "chime",
>>> I wonder how this construct
>>>
>>> ({
>>>
>>> });
>>>
>>> is compatible with ES5 object properties descriptors, in ES5 it is
>>> possible to define getters and settes for properties/methods, is it the
>>> possible to do something like
>>>
>>> <element .....>
>>> ...
>>> <script>
>>>
>>> ({
>>>   readyCallback: function () {
>>>     //init component
>>>   },
>>> });
>>>
>>> Object.defineProperties(this.prototype, {  // or maybe
>>> Object.defineProperties(this, {
>>>   "property": {
>>>         "get": function() { return 5; }
>>>         "set": function(value) {}
>>>     }
>>> });
>>> </script>
>>>
>>> </element>
>>>
>>> Will it work? Is it suppose to work?
>>>
>>> Brona
>>>
>>>
>>>
>>  Of course I ment
>> Object.defineProperties(ElementConsructorName.prototype
>>
>> Brona
>>
>>
>
> --
>
>  s pozdravem
>          Bronislav Klučka
>
>
>
> [image: http://www.bauglir.com] <http://www.bauglir.com>
>
> http://www.bauglir.comBronislav.Klucka@bauglir.com
>
>   * webové aplikace
>   * software na zakázku
>
>
>

Received on Sunday, 23 June 2013 19:46:15 UTC