使用嵌套的 JQuery 可排序对象时,如何使 DOM 和模型保持同步?假设我有一个控制器,其定义如下:
function testCtrl($scope) {
$scope.data = [{'name' : 'Test 1',
'index' : 0,
'values': [{'name' : 'sub test 1-1', 'index' : 0}, {'name' : 'sub test 1-2', 'index' : 1}]},
{'name' : 'Test 2',
'index' : 1,
'values': [{'name' : 'sub test 2-1', 'index' : 0}, {'name' : 'sub test 2-2', 'index' : 1}]}
];
$scope.orderProp = 'index';
}
现在我想使用以下模板在 JQuery sortables 中显示第一级数据和第二级数据:
<ul ng-sortable='data'>
<li ng-repeat="d in data | orderBy:orderProp">
<p>{{d.name}}</p>
<ul ng-Sub-Sortable="d.values">
<li ng-repeat="sub in d.values">{{sub.eg}}</li>
</ul>
</li>
</ul>
我使用指令来指定两种不同类型的可排序列表,因为它们的行为确实不同(为简洁起见,从下面删除):
app.directive("ngSortable", function(){
return {
link: function(scope, element, attrs){
element.sortable();
}
};
}
app.directive("ngSubSortable", function(){
return {
link: function(scope, element, attrs){
element.sortable();
}
};
}
现在,当用户对列表进行排序时,我如何更新模型以确保索引正确,从而将来正确输出列表?