私はミニ連絡先リストに取り組んでおり、ドラッグ アンド ドロップ効果を達成しようとしています。現在、DB からデータを取得するコントローラーがあり、このようになっています。
Index.controller('cIndex', function($scope, $http) {
$scope.init = function() {
$http.get('php/contacts.php').success(function(data) {
$scope.jsonContactsList = data;
$scope.jsonContactsDetail = [];
});
};
$scope.init();
$scope.listdetail = function(index) {
alert(index);
};
});
そして、このコントローラーは画面に連絡先のリストを追加します。リストからアイテムをドラッグしてリストの外にドロップすると、アイテムがリストから消えて、その特定の連絡先に関する詳細な div として表示されるようにしたいと考えています。
現在、2 つのディレクティブがあります。1 つはドラッグ効果を、もう 1 つはドロップ効果を作成します。これらは次のようになります。
Index.directive('contactListDrag', function() {
return {
restrict: 'A',
link: function(scope, elem, attr) {
var options = scope.$eval(attr.contactListDrag);
elem.draggable(options);
}
};
});
Index.directive('contactListDrop', function() {
return {
restrict: 'A',
link: function(scope, elem, attr) {
elem.droppable({accept: '.contact-list-item'});
elem.bind('drop', function(event, ui) {
var id = parseInt($(ui.draggable).attr('id'), 10);
$scope.listdetail(id);
});
}
};
});
コントローラー内に listdetail という関数があり、jsonContactsList 内の行を jsonContactsDetail に変更するつもりですが、そのためには、ドロップ可能な contactListDrop ディレクティブ内のコントローラーから listdetail 関数を呼び出す必要があります。
よろしくお願いします、ダニエル!