如何访问附加行为的子元素?

时间:2015-04-03 16:16:55

标签: aurelia

我正在尝试为https://github.com/RubaXa/Sortable写一个aurelia附加行为,允许使用html 5拖放重新排序列表中的项目,类似于他们为AngularJS设置的项目。到目前为止,html元素的拖放与以下模板代码完美配合

<template>
  <require from="./sortable"></require>
  <section>
    <h2>${title}</h2>
    <ul sortable>
      <li repeat.for="item of items">${item.title}</li>
    </ul>
  </section>
</template>

和附加行为

import {Behavior} from 'aurelia-framework';
import Sortable from 'rubaxa-sortable';

export class SortableAttachedBehavior {
  static metadata() {
    return Behavior
      .attachedBehavior('sortable');
  }

  static inject() {
    return [Element];
  }

  constructor(element) {
    this.element = element;
  }

  bind(viewModel) {
    this.sortable = Sortable.create(this.element);
  }

  unbind() {
    this.sortable.destroy();
    this.sortable = null;
  }
}

作为下一步,除了重新排序html元素之外,我还想重新排序模型中的数据项。我可以从我的可排序实例中获取有关dnd的必需事件。我现在的问题是获得对这些项目的引用。

因为我只想在子元素上存在repeat.for行为时才这样做,我认为最好的方法是访问其Repeat实例并更新其items属性的内容。但是,如何检查此附加行为是否存在以及如何获取Repeat实例?

或者是否有更好的方法来访问项目(除了再次指定它们作为我的可排序行为的属性)?

干杯,蒂尔曼

1 个答案:

答案 0 :(得分:0)

已经有插件了 例如https://github.com/buttonwoodcx/bcx-aurelia-reorderable-repeat

你可以通过查看@源( - :

)来查看它是如何实现的