2

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

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

谢谢。

4

1 回答 1

3

您应该查看淘汰赛映射插件。它将根据您的数据生成属性,因此您不必手写所有属性。

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

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

于 2012-05-17T01:11:04.673 回答