Javascript 使用可拖动+;将项目从子控制器移动到父控制器;可删除指令
我有两个指令,可拖动和可拖放。指令本身将jquery ui函数应用于元素。我的可拖动项位于具有可拖放div的父控制器的控制器中。如何将该项从子控制器项列表删除到父控制器列表。同时从屏幕上的可拖放列表中删除该项,并增加可拖放div的长度 我已经安装了一个JSFIDLE HTMLJavascript 使用可拖动+;将项目从子控制器移动到父控制器;可删除指令,javascript,jquery-ui,angularjs,angularjs-directive,Javascript,Jquery Ui,Angularjs,Angularjs Directive,我有两个指令,可拖动和可拖放。指令本身将jquery ui函数应用于元素。我的可拖动项位于具有可拖放div的父控制器的控制器中。如何将该项从子控制器项列表删除到父控制器列表。同时从屏幕上的可拖放列表中删除该项,并增加可拖放div的长度 我已经安装了一个JSFIDLE HTML 你的JSFIDLE似乎不起作用。最快的解决方法就是不使用子控制器。那么您应该可以访问相同的范围。你真的需要它吗 如果这样做,您可以为此设置事件,并在$rootScope上使用$.emit或$.broadcast,然后在c
你的JSFIDLE似乎不起作用。最快的解决方法就是不使用子控制器。那么您应该可以访问相同的范围。你真的需要它吗 如果这样做,您可以为此设置事件,并在$rootScope上使用$.emit或$.broadcast,然后在childCtrl上设置一个侦听器,一旦删除它,它将从列表中删除 编辑: 现在JSFIDLE正在工作,请查看: 我删除了childCtrl,并让代码执行我认为您希望它执行的操作:
var app = angular.module('myApp', []);
app.controller('parentCtrl', function ($scope) {
$scope.dropped_items = [
{id: 1, title: 'Note 1'},
{id: 2, title: 'Note 2'},
{id: 3, title: 'Note 3'}
];
$scope.items = [
{id: 4, title: 'Note 4'},
{id: 5, title: 'Note 5'},
{id: 6, title: 'Note 6'},
{id: 7, title: 'Note 7'},
{id: 8, title: 'Note 8'}
];
});
app.directive('draggable', function () {
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.draggable({
revert: true
});
}
};
});
app.directive('droppable', function ($compile) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.droppable({
drop: function (event, ui) {
var draggedElement = angular.element(ui.draggable);
var dragIndex = draggedElement.data('index');
var dropIndex = angular.element(this).data('index');
scope.items.splice(dragIndex, 1);
scope.dropped_items.push(draggedElement.data('obj'));
console.log(dragIndex);
console.log(dropIndex);
console.log(scope);
scope.$apply();
}
});
}
};
});
var app = angular.module('myApp', []);
app.controller('parentCtrl', function ($scope){
var dropped = [
{id:1, title:'Note 1'},
{id:2, title:'Note 2'},
{id:3, title:'Note 3'}
];
$scope.dropped_items = dropped;
});
app.controller('childCtrl', function ($scope){
var data = [
{id:4, title:'Note 4'},
{id:5, title:'Note 5'},
{id:6, title:'Note 6'},
{id:7, title:'Note 7'},
{id:8, title:'Note 8'}
];
$scope.items = data;
});
app.directive('draggable', function() {
return {
restrict:'A',
link: function(scope, element, attrs) {
element.draggable({
revert:true
});
}
};
});
app.directive('droppable', function($compile) {
return {
restrict: 'A',
link: function(scope,element,attrs){
element.droppable({
drop:function(event,ui) {
var dragIndex = angular.element(ui.draggable).data('index');
var dropIndex = angular.element(this).data('index');
console.log(dragIndex);
console.log(dropIndex);
console.log(scope);
scope.$apply();
}
});
}
};
});
var app = angular.module('myApp', []);
app.controller('parentCtrl', function ($scope) {
$scope.dropped_items = [
{id: 1, title: 'Note 1'},
{id: 2, title: 'Note 2'},
{id: 3, title: 'Note 3'}
];
$scope.items = [
{id: 4, title: 'Note 4'},
{id: 5, title: 'Note 5'},
{id: 6, title: 'Note 6'},
{id: 7, title: 'Note 7'},
{id: 8, title: 'Note 8'}
];
});
app.directive('draggable', function () {
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.draggable({
revert: true
});
}
};
});
app.directive('droppable', function ($compile) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.droppable({
drop: function (event, ui) {
var draggedElement = angular.element(ui.draggable);
var dragIndex = draggedElement.data('index');
var dropIndex = angular.element(this).data('index');
scope.items.splice(dragIndex, 1);
scope.dropped_items.push(draggedElement.data('obj'));
console.log(dragIndex);
console.log(dropIndex);
console.log(scope);
scope.$apply();
}
});
}
};
});