2014-01-26 61 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