我已经创建了一个指令来处理由Jquery
提供的selectablemydirectives.directive('uiSelectable', function ($parse) {
return {
link: function (scope, element, attrs, ctrl) {
element.selectable({
stop: function (evt, ui) {
var collection = scope.$eval(attrs.docArray)
var selected = element.find('div.parent.ui-selected').map(function () {
var idx = $(this).index();
return { document: collection[idx] }
}).get();
scope.selectedItems = selected;
scope.$apply()
}
});
}
}
});
在html中使用
<div class="margin-top-20px" ui-selectable doc-array="documents">
其中documents是服务器在ajax响应中返回的数组。
它的工作正常我可以选择多个项目或单个项目
问题:我想清除关闭按钮上的选择
http://plnkr.co/edit/3cSef9h7MeYSM0cgYUIX?p=preview
我可以在控制器中编写jquery来删除.ui选择的类,但不推荐使用它 有人能引导我了解实现这类问题的最佳实践
更新
我通过在取消时播放事件并在指令
上收听来解决问题$scope.clearSelection=function() {
$scope.selectedItems = [];
$timeout(function () {
$rootScope.$broadcast('clearselection', '');
}, 100);
}
并在指令
中scope.$on('clearselection', function (event, document) {
element.find('.ui-selected').removeClass('ui-selected')
});
这是正确的做法,或者解决问题的最佳做法是什么。