탐색 메뉴의 구조를 포함하는 데이터 구조가 있습니다.HTML 변경 사항을 모델에 바인딩
function linksRarrange($scope, linksData) {
$scope.links = [
{
text: 'Menu Item 1',
url: '#',
submenu: []
}, {
text: 'Menu Item 2',
url: '#',
submenu: [
{
text: 'Sub-menu Item 3',
url: '#',
submenu: []
}, {
text: 'Sub-menu Item 4',
url: '#',
submenu: [
{
text: 'Sub-sub-menu Item 5',
url: '#',
submenu: [
{
text: 'Sub-sub-menu Item 6',
url: '#',
submenu: []
}
...
];
}
그리고 그들을 재정렬하기 위해 jQuery UI를 사용하고 있습니다. 문제는이 경우 양방향 바인딩을 사용하여 어떻게 links
개체가 변경시 업데이트 될지 잘 모르겠다는 것입니다.
이
은 HTML입니다 :<div class="nav-manage clearfix" ng-app="linksManager">
<div
class="links-arrange"
ng-controller="linksRarrange"
ng-init="submenu = links;"
>
<ul
class="ng-list-level"
model-subset="submenu"
ui-jq="sortable"
ng-include="'inner-list.html'"
></ul>
</div>
<script type="text/ng-template" id="inner-list.html">
<li ui-jq="droppable" ng-repeat="link in submenu">
<a href="{{link.url}}">{{link.text}}</a>
<ul
class="ng-list-level"
ng-class="{'empty hidden': !link.submenu.length}"
ui-jq="sortable"
ng-init="submenu = link.submenu;"
ng-include="'inner-list.html'"
></ul>
</li>
</script>
이는 jQuery를 UI의 통과입니다 :
linksManager.value('ui.config', {
jq: {
sortable: {
connectWith: '.ng-list-level',
dropOnEmpty: true,
placeholder: 'sortable-nav-items-placeholder'
},
droppable: {
tolerance: 'touch',
over: function() {
$(this).children('ul.hidden').removeClass('hidden');
},
out: function() {
$(this).children('ul.empty').addClass('hidden');
},
drop: function() {
$(this).children('ul.empty').removeClass('empty');
}
}
}
});
고맙습니다. 가장 좋은 해결책은 구현을 읽고 거기에서 계속하는 것입니다. – ilyo