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 <[email protected]> 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

http://www.bauglir.com

http://www.bauglir.com
[email protected]

  * webové aplikace
  * software na zakázku

Reply via email to