我编写了一个jquery插件,允许用户使用触摸或鼠标(kind of like this)来使用ul。该插件适用于更新DOM,但我不知道如何告诉Angular“更新”模型绑定。具体来说,li移动后,li中的ng-click不会触发。我还想更新$ index并告诉服务器新订单是什么。有什么想法吗?
HTML:
<ul class="unstyled" ng-sortable>
<li ng-repeat="item in list.Items">
{{item.QuantityType.Name}} {{item.Name}} {{index}}
<button class="close" ng-click="deleteItem($index)" aria-hidden="true">×</button></li></ul>
指令:
.directive('ngSortable', function () {
return {
link: function (scope, element) {
angular.element(element).draggableTouch({ onSortEndCallback: function () { scope.finishedSorting(); } });
}
};
})
编辑:添加了更多上下文的代码。
答案 0 :(得分:0)
假设ng-click="deleteItem($index)"
无效
我建议您传递item
而不是$index
,因此请将代码更改为
ng-click="deleteItem(item)"
您可以使用indexOf
函数在数组
scope.list.Items.indexOf(item)
答案 1 :(得分:0)
点击或触摸后调用插件中的控制器。您可以从控制器angular.element(domElement).scope()外部访问范围,以获取元素的当前范围。 然后使用插件中的数据更新$ scope.sort(发送到服务器)和$ index。