2014-01-26 54 views
0

YUI DataTable不显示'dot.notation'键的值(尽管似乎有一个奇怪的技巧可行)。补救这个的最好方法是什么?我想要一个'正确的'答案,而不是当前的那个我扁平化嵌套对象并保留嵌套对象的位置(这两个对象都必须存在才能正常工作)。yui datatable列点符号不显示

示例数据(第三基准的作品,因为怪异的复制方法的)

var table = new Y.DataTable({ 
    columns: ['key', 'dot.notation'], 
    data: [{ 
     // broken 
     key: 'value', 
     'dot.notation': 5 
    }, { 
     // broken 
     key: 'value', 
     dot: { 
      notation: 5 
     } 
    }, { 
     // displays 
     key: 'value', 
     'dot.notation': 5, 
     dot: { 
      notation: 5 
     } 
    }] 
}); 

http://jsfiddle.net/dirkraft/ERk2d/

回答

1

使用DataSchema是正确的操作方法。我相信,用来工作,但虚线键版本,那么在3.5版本的变化停止了这方面的工作

YUI().use('datatable', 'datasource','datasource-jsonschema', function (Y) { 

    var ds = new Y.DataSource.Local({ 
     source: [{ 
      // broken 
      key: 'value', 
      'dot.notation': 5 
     }, { 
      // broken 
      key: 'value', 
      dot: { 
       notation: 5 
      } 
     }, { 
      // displays 
      key: 'value', 
      'dot.notation': 5, 
      dot: { 
       notation: 5 
      } 
     }] 
    }); 

    ds.plug({fn: Y.Plugin.DataSourceJSONSchema, cfg: { 
    schema: { 
     resultFields: [ 
      "key", 
      { 
       key:'foo', 
       locator:'dot.notation' 
      } 
     ] 
    } 
}}); 

    var table = new Y.DataTable({ 
     columns: ['key', 'foo'], 
     caption: 'Better Now' 
    }); 
    table.plug(Y.Plugin.DataTableDataSource, { 
     datasource: ds 
    }); 
    table.render('#lolol'); 
    table.datasource.load(); 

}); 

http://jsfiddle.net/ERk2d/3/

+0

我刚刚注意到,上面的代码适用于所有三个对象中的数据,包括首先,它使用'dot.notation'形式,这是我所不希望的。看起来DataSchema更喜欢子键值,但我希望它能工作 – barnyr

+0

我实际上使用YUI所称的“自定义同步层”,我认为这可能会绕过某些插件的使用,例如DataSourceJSONSchema。但至少我可以设置一个断点并找出它在做什么。谢谢 –

+0

没问题。请张贴您的解决方案。您是使用自己的同步层还是使用YUI提供的其中一个? – barnyr