Knockoutjs avec jQuery UI Sortable
-
30-09-2019 - |
Question
Je travaille avec les groupes de Google sur les forums de knock-out de l'aide avec cela aussi -. Mais je me dis que d'un public plus large ne peut jamais nuire à la situation
Je suis en train d'obtenir KO au travail avec une situation en utilisant l'interface utilisateur de jQuery plug-in « Sortable ». J'ai mon code affiché ici.
Tenter d'utiliser une liaison personnalisée ...
ko.bindingHandlers.onReceiveItem = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
$(element).bind("sortreceive", function (event, ui) {
ko.bindingHandlers.onReceiveItem.update(element, valueAccessor, allBindingsAccessor, viewModel);
});
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var value = ko.utils.unwrapObservable(valueAccessor());
var bindings = allBindingsAccessor();
}
};
Le but est que lorsque la liste Sortable reçoit un élément, il peut obtenir l'élément et l'ajouter à l'autre observableArray.
Ce ne fonctionne pas tout à fait pour moi, cependant. Je vais avoir du mal à obtenir l'événement au feu comme je le veux. La façon dont je l'ai mis en place, il fait feu, mais il ne retourne une valeur "true / false. J'espérais que quelqu'un d'autre pourrait avoir une idée de ce que je fais mal et savoir comment y remédier.
(pour utiliser le code, vous devez faire référence
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/themes/base/jquery-ui.css" rel="Stylesheet" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.js"></script>
en haut, et ensuite la nouvelle version de Knockout (1.1.1)
http://cloud.github.com/ téléchargements / SteveSanderson / knock-out / knock-out-1.1.1.debug.js
La solution
Je ne savais pas Steve avait déjà répondu à cette avant d'avoir fini. Ici, vous allez bien, de manière légèrement différente que lui.
Sortable en fait beaucoup plus difficile, cela aurait été beaucoup plus facile avec un glisser-déposer de liaison lié à chaque produit. Le problème avec triables est vous liez sur la totalité de la liste au lieu des objets.
Autres conseils
que nous avons retravaillé l'échantillon et est venu avec un bindingHandler presque complet, il ne nécessite pas un attribut id et il a également réordonnancement poignées. Voici le code:
http://jsbin.com/knockoutsortable/20/edit
utilisation:
-
Il utilise la template.foreach liant pour savoir ce qui est le tableau associé dans le viewmodel.
-
Vous pouvez utiliser DataBind = "foreach: Produits, sortable: true". Pour activer le tri dans un seul tableau avec aucune option
-
Il travaille avec des objets observableArray.
-
Il est la construction de la triables jQuery par lui-même, vous pouvez passer les mêmes options objet dans la liaison que dans le constructeur jQuery.sortable.