我使用angular-ui获取一个列表,可以使用"拖放"进行排序,它可以正常工作。
就像这样(工作正常):
的index.html
<ul ui-sortable ng-model="list">
<li ng-repeat="item in list" class="item">{{item}}</li>
</ul>
app.js
var myapp = angular.module('myapp', ['ui.sortable']);
myapp.controller('controller', function ($scope) {
$scope.list = ["one", "two", "three", "four", "five", "six"];
});
现在,我需要知道列表(这可能是很多具有此行为的列表)发生了变化,我尝试了drop, dropend, drag, ...
但是没有得到它。
这里是我的代码http://jsfiddle.net/9sueU/4/
我需要使用倍数列表,例如此处http://jsfiddle.net/b5nqd/1/
答案 0 :(得分:1)
您需要观看集合以进行更改。即使订单已更改,Angular也会通知您
$scope.$watchCollection('list', function (newVal, oldVal) {
// DO something
});
我已更新您的小提琴here
答案 1 :(得分:1)
排序列表时,angular-ui将直接更改数组顺序。您可以使用$scope.$watch
收听list
数组的更改事件。
$scope.$watch("list", function (value) {
console.log("Changed !", value);
}, true);
您需要将第三个参数作为true
传递,以强制Angular使用angular.equals
验证更改,而不是基本引用相等。实际上,数组引用没有改变,它仍然是相同的数组,但其内容被修改,因此只有angular.equals
可以区分这两者。