在Angularjs中获取一个列表会打破ng-click

时间:2013-11-15 22:48:32

标签: javascript jquery angularjs

我编写了一个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">&times</button></li></ul>

指令:

.directive('ngSortable',  function () {
        return {
            link: function (scope, element) {
                angular.element(element).draggableTouch({ onSortEndCallback: function () { scope.finishedSorting(); } });
            }
        };
    })

编辑:添加了更多上下文的代码。

2 个答案:

答案 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。