Je suis en train d'animer un utilisateur de sélectionner les éléments à partir de différents ensembles d'éléments. L'élément doit animer à partir de l'cliqué sur installer à sa nouvelle position dans la liste des éléments sélectionnés.
Dans le dessous de démonstration, considérons les cases roses comme des éléments disponibles et le bordé de la boîte de la liste des éléments sélectionnés (boîtes bleues). L'utilisateur peut sélectionner un élément en cliquant sur l'une des cases roses:
angular.module('test', ['ngAnimate'])
.controller('testCtrl', function($scope) {
$scope.products = [{}, {}, {}, {}];
$scope.purchased = [{}];
$scope.purchase = function(dir) {
$scope.direction = dir
$scope.purchased.push($scope.products.pop());
};
})
.directive('testDir', function($animate) {
return {
link: function(scope, element) {
$animate.on('enter', element, function(element, phase) {
$target = scope.direction == 'left' ? $('.stock:first') : $('.stock:last');
element.position({
my: 'center',
at: 'center',
of: $target,
using: function(pos, data) {
$(this).css(pos);
$(this).animate({
top: 0,
left: 0
});
}
});
});
}
};
});
.stock {
display: inline-block;
width: 50px;
height: 50px;
background: hotpink;
}
.stock.right {
margin-left: 100px;
}
.product {
height: 50px;
width: 50px;
border: 1px solid;
}
.purchased {
height: 60px;
margin-top: 100px;
border: 2px dotted;
}
.purchased .product {
display: inline-block;
margin: 5px;
background: dodgerblue;
}
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script src="https://code.angularjs.org/1.4.8/angular.js"></script>
<script src="https://code.angularjs.org/1.4.8/angular-animate.js"></script>
<div ng-app="test" ng-controller="testCtrl">
<div class="stock" ng-click="purchase('left')"></div>
<div class="stock right" ng-click="purchase('right')"></div>
<div class="purchased clearfix">
<div class="product" ng-repeat="product in purchased" data-test-dir>
</div>
</div>
</div>
Eh bien, ça fonctionne, mais je suis en utilisant jQuery ui pour trouver la position de départ (position de boîtes de rose sera variable en responsive design) et jquery animate méthode pour animer l'élément.
J'ai également de stocker les cliqué sur l'orientation dans le champ d'application et je suis à la fois la position initiale et de l'animation à la fin de la position dans l' enter
écouteur d'événement.
J'ai lu et expérimenter beaucoup avec construit dans l'animation des crochets angulaires, mais ne pouvait pas trouver un bon moyen d'animer les éléments du rapport/positions dynamiques.
Est-il une meilleure façon de réaliser la même expérience utilisateur en angular js façon..?