2013-11-25 139 views
1

我是新來的JavaScript開發,我遇到了一個我認爲已經解決的問題,但我不知道如何找到答案。爲JSON對象創建CRUD?

說我有一個JSON對象,如下所示:

// bagelList.json 
{ 
    "description": "The bagel list. Who brings the bagels on what day.", 
    "list": [ 
     { 
      "date": "Nov 25", 
      "name": "Cory" 
     }, 
     { 
      "date": "Nov 26", 
      "name": "Jordan" 
     } 
    ] 
} 

我要顯示在網頁上該對象的信息,但我想嬌滴滴地顯示它 - 而不是直接打印JSON。我也希望允許用戶更新列表,添加新條目,修改說明等

我可以顯示數據,像這樣:

$(document).ready(function() { 

    $.getJSON('bagelList.json', function(bagelData) { 

     var items = []; 
     $.each(bagelData.list, function(index, bagelAssignment) { 
      items.push("<tr><td contenteditable="true">" 
         + bagelAssignment.date + "</td><td>" 
         + bagelAssignment.name + "</td></tr>"); 
     }); 

     $("tbody#schedule").append(items.join("")); 

    }); 

}); 

然而,現在所有的數據被加密了位,被嵌入在html中的本質。我可以編寫一個解析器來遍歷所有表項,並在用戶更新項目後重新創建原始JSON對象,但這看起來像是一個混亂。

建立數據模型的正確方法是什麼?它可以以吸引人的方式顯示,但保留從對象讀取和寫入的能力?

我認爲這個問題已經被解決過很多次,所以我不想太遠下去寫CRUD之路才發現,我只是不得不做XYZ,它就可以工作。

+2

您所描述的功能是由框架提供的,如[Backbone.js](http://backbonejs.org/),這些框架旨在促進視圖(您與用戶的界面)的雙向綁定,以一個模型(你的JSON對象)。 –

回答

2

有項目,如JTable中(http://www.jtable.org/Demo/Filteringhttps://github.com/hikalkan/jtable

但在這我的想法 - 我認爲有,你就需要用純CRUD操作的表的情況下量有限;通常它會更流暢,更具體到你的問題/領域。 我會去Angular。有人還提到了backbone.js,但我認爲它將是無縫的。

如果你走的角度路徑,我建議egghead,那裏有很棒的視頻。

+0

我有點同意這裏。如果您正在尋找一個通過魔術「正常工作」的框架,而不是必須聯繫處理程序以響應模型中的變化而強制變異DOM,那麼Angular可能是比Backbone更好的選擇。 –