Knockout.js — рекомендации по хранению объектных данных

Я использую нокаут 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