2015-05-17 2 views
0

Я новичок в backboneJS. Я загрузил код с сайта www.todomvc.com. У меня есть кнопка, которая запускает функцию moveUp ниже, которая будет перемещать модель «todo» на один шаг выше i.e. Приоритизировать, она упорядочивает коллекцию по атрибуту «order». Я хотел, чтобы я мог поменять атрибут «порядок» обеих моделей. Это то, что я думал, будет работать ....Невозможно поменять атрибуты коллекции модели?

moveUp: function(){ 
    var index = this.model.collection.indexOf(this.model); 
    var nextModel = this.model.collection.at(index+1); 

    var order1 = this.model.attributes.order; 
    var order2 = nextModel.attributes.order; 

    this.model.set('order', order2); 
    this.model.collection.models[index + 1].set('order', order1); 

} 

Но это не сработает, атрибут 'order' остается таким же до и после кода. Вещи, которые я попытался это:

model.set({'order',order1}); 


model.set('order',order1); 


var order = _.clone(model.get('order')); 
model.set(order, order1); 


var map = {}; 
map['order'] = value; 
this.model.set(map); 

Код общий here. Если кто-то может указать, где я ошибаюсь. Также я где-то читал, что это не вызовет «изменения». Помощь будет высоко оценена.

ответ

1

Я вижу проблему в том, как вы устанавливаете новые значения порядка.

Магистраль Model set требует либо хэша свойств, либо 2 аргумента для имени и значения свойства. Из документации:

Установить хэш атрибутов (один или несколько) на модели. Если какой-либо из атрибутов изменяет состояние модели, событие «изменения» будет иметь значение , запущенное на модели. Изменение событий для определенных атрибутов также вызвано , и вы также можете привязать их к ним, например: change:title и change:content. Вы также можете передавать отдельные ключи и значения.

Таким образом, вы можете вызвать set с помощью любого из этих 2-мя способами:

this.model.set({'order': order2}); //note the curly brackets, so you pass a hash of attributes 
this.model.set('order', order2); //note prop name and value are 2 separated arguments 
+0

Я обновил этот вопрос. Пожалуйста, посмотрите –

+0

Он должен работать, взгляните на [эту скрипку] (http://jsfiddle.net/f18c7Ltn/1/). Вы уверены, что 'model' и' nextModel' - это то, что вы ожидаете? Вы проверили атрибут заказа на обеих моделях в конце метода moveUp? –

+0

Заказ остался неизменным после вашей скрипки –