我正在使用knockout js从异步服务加载作业列表。每个工作都有很长的字段列表,我想知道将数据存储为原始json是否被认为是不好的做法?
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>
后者更清洁,更清晰,但由于我有很多领域,我想得到一些意见。
感谢。
答案 0 :(得分:3)
你应该看看淘汰赛映射插件。它将根据您的数据生成属性,因此您无需手动编写所有属性。
http://knockoutjs.com/documentation/plugins-mapping.html
您正在使用的当前方法在模型中属性更改时不会更新标签,因为您的属性不可观察。使用映射插件也可以解决这个问题。