knockout.js - най-добри практики за съхранение на обектни данни

Използвам 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>

Последното е по-чисто и по-ясно, но тъй като имам много области, исках да получа мнения.

Благодаря.


person Adam Levitt    schedule 16.05.2012    source източник


Отговори (1)


Трябва да погледнете приставката за картографиране на нокаут. Той ще генерира свойствата от вашите данни, така че да не се налага да пишете на ръка всички свойства.

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

Текущият подход, който използвате, няма да актуализира етикета, когато свойство се промени в модела, тъй като вашите свойства не могат да се наблюдават. Използването на плъгина за картографиране ще поправи и това.

person Joel Cunningham    schedule 17.05.2012