为什么我的可排序角度 ng-repeat 菜单会删除排序菜单项之后的所有内容? https://github.com/RubaXa/Sortable/tree/dev 我正在使用带有 Angular 的 RubaXa 的 Sortable 库来为自定义 CMS 制作可排序的菜单系统。当菜单被排序时,我有一个遍历所有菜单项的代码循环,记录它们的位置并更新 $scope.menus。
var menus = {};
jQuery('.mb-draggable').has('a[href!="#"]').each(function(i, menuItem) {
var location = jQuery(menuItem).parent('[data-menu]').data('menu');
var position = jQuery('[data-menu="' + location + '"]').children('.mb-draggable').has('a[href!="#"]').index(jQuery(menuItem));
var id = jQuery(menuItem).data('id');
//findMenuById finds the index and data of the menu item that has a matching id
var found = theme.findMenuById($scope.menus, id);
var newData = found.data;
newData.location = location;
newData.position = position;
if(!menus[location]) {
menus[location] = [];
}
menus[location][position] = newData;
});
$scope.menus = menus;
console.log('$scope.menus', $scope.menus);
$scope.$apply();
$scope.menus 有两个不同的属性 .main 和 .footer,每个属性都包含一个菜单列表项数组。当我制作 $scope.menus = menus 时,$scope.menus 是正确的,但是视图突然摆脱了页脚菜单和编辑按钮,它们不在 ng-repeat 中。这是菜单的玉石。
#navbar.navbar-collapse.collapse
ul#sortable-head.nav.navbar-nav(data-menu="main")
li(ng-repeat="menu in menus.main" class="mb-draggable {{menu.classes}}" ng-class="active(menu.url)" data-id="{{menu.id}}")
a(href="{{menu.url ? menu.url : /}}" target="{{menu.target}}").mb-editable.mb-main-list-a {{menu.title}}
li.drop-down
a(data-toggle="dropdown" href="#").dropdown-toggle
| Blog
span.caret
ul#sortable-footer.dropdown-menu(role="menu" data-menu="footer")
li(ng-repeat="menu in menus.footer" data-id="{{menu.id}}").mb-draggable
a(href="{{menu.url ? menu.url: /}}" target="{{menu.target}}").mb-editable.mb-footer-list-a {{menu.title}}
使用 jQuery 添加编辑按钮
jQuery('[data-menu]').append($compile('<li data-toggle="modal" data-target="#editMenuItemModal" ng-click="selectedMenu($event)" class="mb-edit-menu-item"><a href="#"> <i class="fa fa-pencil fa-lg"></i></a></li>')($scope));