2013-06-27 3 views
6

Я работаю с настраиваемым плагином knockout.js; однако я столкнулся с проблемой, которую я до сих пор не смог решить. У меня есть две сортируемые привязки: одна для ведер и другая для bucketItems. Я могу переупорядочить bucketItems между ведрами; однако я не могу переупорядочить ведра. Не могли бы вы представить, почему это было бы? Я также использую вложенные привязки, но, насколько я могу судить, это не то, что вызывает проблемы.Knockout.js вложенные сортируемые привязки

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

+0

пожалуйста, напишите ваш код и плагин, который вы используете –

+0

по определенным причинам, я не могу опубликовать свой код; однако я смог сузить круг моей проблемы. У меня есть массив bucketIds, и когда я применяю сортировку к нему, он не связывается правильно. к сожалению, я до сих пор не знаю, почему он не будет связываться. (я использую knockout.js-sortable plugin, созданный ryan neimeyer) – user2391998

ответ

8

Я не знаю вашей точной структуры, но вы можете использовать опцию connectClass, чтобы контролировать, какие сортируемые списки подключены. Например, если вы сделали это:

<ul data-bind="sortable: { data: buckets, connectClass: 'buckets' }"> 
    <li> 
     <span data-bind="text: name"></span> 
     <ul data-bind="sortable: { data: items, connectClass: 'items' }"> 
      <li data-bind="text: name"></li> 
     </ul> 
    </li> 
</ul> 

Вы бы только быть в состоянии опустить ведро внутри ведра и деталь в пределах пунктов. Плагин автоматически добавляет класс к родительскому элементу.

Вот пример: http://jsfiddle.net/rniemeyer/YaLgL/

Если вы не хотите, чтобы иметь возможность сортировать элементы между ведрами, то вы могли бы применить уникальный connectClass каждому, как:

http://jsfiddle.net/rniemeyer/czNe8/

+0

Как вы можете заставить это работать, когда вы не хотите, чтобы элемент был отсортирован, а другие были? Я попытался использовать это, хотя элемент не был переупорядочен. Весь родительский UL перемещался, когда я пытался, и это в свою очередь заставило родительский LI UL переупорядочиваться (его странно). – Phil

+0

@ Фил. Может быть, вы можете поставить то, что вы пытаетесь сделать в jsFiddle, с некоторыми заметками? Вероятно, есть способ заставить его работать, но я не уверен, что я нахожусь на вершине вашего сценария. Благодаря! –

+0

Я добавил скрипку: http: //jsfiddle.net/zoldello/8hvXN/2/ Что происходит, когда я пытаюсь переместить элемент NOT MOVABLE, выбирается весь элемент. Попытайтесь удерживать мышь от NOT MOVABLE и обратите внимание на перемещение всего контейнера. Есть ли способ остановить эти проблемы? – Phil