knockout.js - 对象数据存储最佳实践

时间:2012-05-16 22:26:24

标签: javascript data-binding knockout.js field

我正在使用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>

后者更清洁,更清晰,但由于我有很多领域,我想得到一些意见。

感谢。

1 个答案:

答案 0 :(得分:3)

你应该看看淘汰赛映射插件。它将根据您的数据生成属性,因此您无需手动编写所有属性。

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

您正在使用的当前方法在模型中属性更改时不会更新标签,因为您的属性不可观察。使用映射插件也可以解决这个问题。