This is related to:

http://jira.openlaszlo.org/jira/browse/LPP-7958

So, it appears will still need to improve the error reporting when you attempt to write a constraint on an object that does not participate in the OL event system.

http://jira.openlaszlo.org/jira/browse/LPP-7344

But, maybe with the improved runtime error reporting (just added to trunk), these errors will be more obvious, instead of silently failing?

On 2009-10-05, at 09:50, Rami Ojares / AMG Oy wrote:

For completeness sake here is the correct formulation of the idea I was trying to achieve (I quess I should have posted this on the user side)

<canvas debug="true">
  <view name="test">
            <attribute name="someArr" value="new Array()"/>
<view width="100" height="100" bgcolor="$ {this.hasElements(parent.someArr) ? 'red' : 'blue'}" x="30" y="45">
          <method name="hasElements" args="attr">
              return attr.length != 0;
          </method>
          <handler name="onclick">
              parent.someArr.push("foo")
              parent.setAttribute("someArr", parent.someArr);
          </handler>
      </view>
        </view>
</canvas>

Lesson learned:
Use methods for more complex calculations in constraints and name the attributes (dependencies) as arguments.

- rami

Max Carlson wrote:
That's correct. Constraints will only work properly with OL attributes. Things like array.length don't tell the runtime when they change, so the constraint doesn't know when to update...

Rami Ojares / AMG Oy wrote:
It probably has something to do with the dependencies...
Maybe my code is incorrect when it refers to "parent.someArr.length" in the constraint? Am I allowed only to refer to attribute names of laszlo nodes in constraints?
So that dependencies can be constructed properly.

- rami

Rami Ojares / AMG Oy wrote:
Hi,

I stumbled upon a problem with swf9 (and up) attribute constraints.

Here is sample code that works in swf8 but fails silently in swf9

<!-- The problem is with setting of bgcolor attribute -->
<canvas debug="true">
  <view name="test">
            <attribute name="someArr" value=" new Array()"/>
<view width="100" height="100" bgcolor="$ {parent.someArr.length == 0 ? 'red' : 'blue'}" x="30" y="45">
          <handler name="oninit">
              Debug.inspect(parent.someArr.length == 0)
          </handler>
      </view>
       </view>
</canvas>

Here the same thing slightly modified so that it works in swf9

<!-- The problem is with setting of bgcolor attribute -->
<canvas debug="true">
  <view name="test">
            <attribute name="someArr" value=" new Array()"/>
<view width="100" height="100" bgcolor="$ {this.hasErrors() ? 'red' : 'blue'}" x="30" y="45">
          <handler name="oninit">
              Debug.inspect(parent.someArr.length == 0)
          </handler>
          <method name="hasErrors">
              return parent.someArr.length == 0;
          </method>
      </view>
        </view>
</canvas>

So it seems to me that something gets screwed parsing attribute constraints in swf9.
Any ideas?

- rami




Reply via email to