[webkit-help] valueForKeyPath

Eric Lease Morgan eric_morgan at infomotions.com
Sun Mar 28 15:24:18 PDT 2010


Is this a place where I can ask for some help on the valueForKeyPath method as implemented in Javascript in a WebKit browser such as Mobile Safari? If not, then where is a better venue for my question?

In Dashcode I have defined a data source from an remote XML file, and the XML looks like this:

    <waters>
      <water>
        <name water_id='79'>Agean Sea at Kos, Greece</name>
        <collectors>
          <collector collector_id='20'>
            <last_name>Calarco</last_name>
          </collector>
        </collectors>
        <description>Pascal collected...</description>
      </water>
      <water>
        <name water_id='37'>Amazon River, Peru</name>
        <collectors>
          <collector collector_id='8'>
            <last_name>Morgan</last_name>
          </collector>
        </collectors>
        <description>Mom collected...</description>
      </water>
    </waters>

I have then bound elements like name, last_name, and description to various interface elements. Through Javascript I have been able to manipulate these elements as well the collector_id attribute. All this works as expected.

Unfortunately, I am unable to access the water_id attribute. While the water_id attribute displays as a part of my data source and list views, whenever I try to actually access the water_id attribute my application crashes as illustrated by the linked screen shot. [1]

To debug the situation I created a button with the following code using the valueForKeyPath, and as you can see I can access other elements and attributes but not the water_id attribute:

  function getID(event)
  {
    // get my data
    var d = dashcode.getDataSource( 'list' );
                  
    // the following code works
    //var r = d.valueForKeyPath( 'selection.collectors.collector.$collector_id' );
  
    // this code works too
    //var r = d.valueForKeyPath( 'selection.collectors.collector.last_name' );
          
    // so does this code
    //var r = d.valueForKeyPath( 'selection.name' );
  
    // why doesn't this code work! water_id is an attribute of the name element
    var r = d.valueForKeyPath( 'selection.name.$water_id' );
  
    // echo
    alert( r );
  }

What am I doing wrong? Any assistance or pointers would be greatly appreciated.

[1] screen shot - http://infomotions.com/tmp/screen-dump.png

-- 
Eric Lease Morgan




More information about the webkit-help mailing list