Child pages
  • Custom object property types

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The server side JS value of such a property is a custom implementation based on Javascript object - so you should be able to use it just like a normal JS object.

There is one difference though. In order to be able to send fine-grained updates to the client/browser, those values are 'watched'. That means that whenever you assign a completely new javascript object directly to the property (or if you assign an new object/array to one of it's sub properties on any level), that new value you assign will not be 'watched'; you have to take/read it back from the property (which will give you a 'watched' value) before using it further in code.

For example:

Code Block
languagejs
titleDO it like this
var newPropertyValue = { mySybproperty2 : 10 };
// here you assign a new object to the property
elements.myCustomComponent.myObjectProperty = newPropertyValue;
// here you update the reference that you want to use later in code with the 'watched' new value
newPropertyValue = elements.myCustomComponent.myObjectProperty;
(...then later on, maybe during another event handler execution...)
// this modification will be detected because it's using the new 'watched' value you got from elements.myCustomComponent.myObjectProperty after it was assigned - and the change will be sent to the browser
newPropertyValue.mySybproperty1 = 5; 
Code Block
languagejs
titleDON'T do it like this
var newPropertyValue = {};
// here you assign a new object to the property
elements.myCustomComponent.myObjectProperty = newPropertyValue;
(...then later on, maybe during another event handler execution...)
// this will modify the value in newPropertyValue but myCustomComponent.myObjectProperty will not be aware of that to send changes to client/browser
newPropertyValue.mySybproperty = 5; 

Developer handling of custom object properties

...