2012-05-16 38 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

您使用不会更新标签,当在模型中的属性发生变化,因为你的属性是无法观测的现行做法。使用映射插件也可以解决这个问题。