1

Моя проблема в том, что у меня есть функция view и utils, с которой я пытаюсь соединиться с данными модели.Взятие данных с помощью функции с помощью _.clone (this.model.attributes)

С моей точки зрения; У меня есть функция:

getCalculatedData: function() { 
    var calculatedData = utils.calculateAmounts(_.clone(this.model.attributes)) 
}, 

Это возвращает данные моей модели с помощью объекта key/value. Теперь в моей утилите utils я хочу получить эти данные, чтобы использовать вычисления. Поэтому я хочу сделать функцию, которая делает это:

calculatedAmounts: function() { 
    //retrieve data from that 
}, 

Как получить эти значения. Предположим, что имя, фамилия и состояние - все это в той модели, которую оно возвращает в моем представлении. Я создаю переменную хеш, которая хранит их следующим образом:

calculatedAmounts: function() { 
    firstname : this.model.get('firstname'); 
    //etc 
}, 

Как получить значения из этого объекта?

Благодаря

ответ

1

Я не уверен, что полностью понимаю ваш вопрос, но в методе calculatedAmounts, почему бы вам не использовать переменную, которую передается при вызове метода в getCalculatedData?

Ваш код будет выглядеть следующим образом:

getCalculatedData: function() { 
    var calculatedData = utils.calculateAmounts(this.model) 
}, 

calculatedAmounts: function(myModel) { 
    firstname : myModel.get('firstname'); 
    //etc 
}, 

Кроме того, если вы собираетесь изменить вашу модель calculatedAmounts и не хочет, чтобы эти изменения, чтобы отразить вне calculatedAmounts рамки, вы должны глубоко скопировать объект модели ,
Один из распространенных способов сделать это - использовать метод jQuery extend(). Это будет выглядеть так:

calculatedAmounts: function(myModel) { 
    var deepCopiedModel = $.extend(true, {}, myModel); 
    firstname : deepCopiedModel.get('firstname'); 
    //etc 
}, 


Edit:
Кроме того, во избежание прохождения this.model.attributes в ваш метод calculatedAmounts() если вы хотите использовать метод get() в нем.
this.model.attributes - объект Object, а не объект Backbone.Model.

.get() вы будете звонить, если вы передаете this.model.attributes как пары являются метод частью прототипа объекта, а не метод часть прототипа Backbone.Model «s.

+0

Спасибо, что это помогает. На самом деле причиной, по которой я использовал клон, было то, что я не редактировал данные из своей модели. разделение проблем. но это помогает. Спасибо – hiquetj

 Смежные вопросы

  • Нет связанных вопросов^_^