2

非同期サービスからジョブのリストをロードするknockoutjsを使用しています。各ジョブには非常に長いフィールドのリストがあり、データを生の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 に答える