2012-05-16 37 views
2

我正在使用knockout js從異步服務加載作業列表。每個工作都有一個非常長的字段列表,我想知道是否將數據存儲爲原始json是不好的做法?knockout.js - 對象數據存儲最佳實踐

function Job(data) { 
    var self = this; 
    this.data = data; // is this bad practice? 

    this.companyName = data.CompanyName; // should I instead list out all the fields? 
    this.jobTitle = data.JobTitle; 
    // .. 50 more fields 
} 

function JobsViewModel() { 
    function getJobs() { 
     $.getJSON(myUrl, { myParams }, function(data) { 
      var mappedJobs = $.map(JSON.parse(data.value), function(item) { return new Job(item) }); 
      self.jobs(mappedJobs);       
     }); 
    } 

    // initial data load 
    getJobs(); 
} 

... // then in my data-bindings 
<label data-binding="text: data.CompanyName"></label> 
    versus 
<label data-binding="text: companyName"></label> 

後者更清潔,更清晰,但由於我有很多領域,我想獲得一些意見。

謝謝。

回答

3

你應該看看挖空映射插件。它會從你的數據中生成屬性,所以你不必手寫所有的屬性。

http://knockoutjs.com/documentation/plugins-mapping.html

您使用不會更新標籤,當在模型中的屬性發生變化,因爲你的屬性是無法觀測的現行做法。使用映射插件也可以解決這個問題。