У меня есть сортируемый список (я не использовал jqueryui sortable, я сам написал небольшой список) в приложении Backbone.js. Для каждого элемента списка модель Backbone имеет атрибут порядка, который сохраняет его порядок в списке. Каждый раз, когда я сортирую этот список, я хочу изменить этот атрибут порядка для каждого элемента списка, который изменил позицию. Но проблема в том, что я не знаю, как определить действие сортировки. Может быть, это действие легко обнаружить в перетаскиваемой модели элемента, но поскольку позиции других элементов будут затронуты при перемещении этого элемента, как определить действие сортировки в этих моделях элементов и впоследствии изменить их атрибут порядка?
Как обновить атрибут порядка модели, когда список сортируется в Backbone?
03.05.2012
- Вы написали код сортировки..... разве вы не единственный, кто ответит на этот вопрос? 04.05.2012
- @asawyer Но мой код сортировки просто об изменении представления. К модели это не имеет никакого отношения. Итак, я хочу знать, как изменить соответствующий атрибут модели при изменении представления. 04.05.2012
- @chaonextdoor View всегда отражает изменения в модели. Контроллер должен фактически изменить атрибуты модели (здесь события из представления). Кстати,
I didn't use jqueryui sortable, I wrote a small one all by myself
и «Но проблема в том, что я не знаю, как определить действие сортировки», вы полностью противоречите тому, что говорите. Либо плагин сортировки не завершен, либо у вас мало знаний о том, что происходит в плагине сортировки. 04.05.2012
Ответы:
1
Когда вы меняете положение элемента в списке (путем перетаскивания или каким-либо иным образом), возникает ли событие, к которому вы можете привязаться? Если ничего другого, если вы перетаскиваете их, возможно, вы можете привязаться к mouseup
. Есть ли модели в коллекции? Или вы можете получить доступ к объектам представления Backbone из элементов DOM?
Возможно что-то вроде этого. Это предполагает, что вы сохранили объект представления Backbone в свойстве view_object
, используя jQuery.data
, и что вы передали соответствующую модель конструктору представления в качестве свойства model
объекта параметров.
var Item_View = Backbone.View.extend( {
initialize : function ( options ) {
this.$el.data( 'view_object', this );
},
events : {
"mouseup" : function () {
$( "#items .item" ).each( function ( index ) {
$( this ).data( 'view_object' ).model.set( 'order', index );
} );
}
// "mouseup"
}
// events
} );
var model = new Item_Model( {} );
var view = new Item_View( {
model : model
} );
04.05.2012
Новые материалы
Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..
Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально
Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..
Частный метод Python: улучшение инкапсуляции и безопасности
Введение
Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..
Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования
Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..
Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv)
Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..
Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..
Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..