【问题标题】:knockout.js - object data storage best practicesknockout.js - 对象数据存储最佳实践
【发布时间】:2012-05-16 22:26:24
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: javascript data-binding knockout.js field


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-10
      • 2015-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      • 1970-01-01
      相关资源
      最近更新 更多