Hello Phill,
have you thought of using the selection of the controller? If using a data
binding controller, the selection of the controller is sure a good idea
because it uses the model objects and not the tree folders.
Best,
Martin
phill54 wrote:
>
> Hi,
>
> i was more or less trying to reproduce the json / tree example from the
> demo site with very few little modifications and figured out that even on
> the online example the "changeSelection" event is being fired three times
> when i click a node on the tree.
>
> Is this a Bug or is this on purpose and if so, what's the purpose?
> I want to attach some functions to the changeSelection even of the tree
> but I don't want those functions to be called three times.
>
> I would like to keep my prototypes as simple as possible.
> After I realized the json/tree controller solution fires several times i
> filled a tree manually with treefolder objects and checked if the
> resulting tree also fires its changeSelection events three times - but it
> was good and fired only *one* event.
>
> Now what would I have to do? Do my own Model/Delegate solution? I already
> started that, but for the moment the code below would do it to me as long
> at it wouldn't fire events too many times.
>
> My current code is attached
>
>
> /**
> * @author phill54
> */
>
> qx.Class.define("jsonTreeTest.TreeModelTest",
> {
> extend : qx.core.Object,
> construct : function () {
> var tree = new qx.ui.tree.Tree().set({
> selectionMode : "one",
> hideRoot : false,
> rootOpenClose : true,
> width: 400,
> height: 300
> });
>
> var controller = new qx.data.controller.Tree(null, tree, "kids",
> "name");
> controller.setIconPath("iconpath");
>
> var url = "http://phill54/datasource/tree.json.php";
> var store = new qx.data.store.Json(url);
> store.bind("model", controller, "model");
> controller.bind("model", store, "model");
>
> tree.addListener("changeSelection", function(ev) {
> /* this function is executed three times on click on a
> node*/
> var data = ev.getData();
>
> console.log("typeof:\t\t\t" + typeof(data[0]));
> console.log("length:\t\t\t" + data[0].length);
>
> /* this function shows me the label/name of the
> selected node
> it turns out that the changeSelection gets fired 3
> times:
> 1st time: event data gives me the previously selected
> tree node
> 2nd time: event data gives me the currently selected
> tree node
> 3rd time: event data gives me the currently selected
> tree node again
> (!!!)
> */
> console.log(data[0].getModel().getName());
> }, this);
>
> store.addListener("loaded", function(ev) {
> tree.getRoot().setOpen(true);
> }, this);
>
> qx.core.Init.getApplication().getRoot().add(tree, {top: 10,
> left: 10});
> },
> destruct : function () {
> },
> properties : {
> },
> members : {
> }
> });
>
>
--
View this message in context:
http://n2.nabble.com/Json-Store-Tree-Controller-changeSelection-event-gets-fired-three-times-per-click-tp4107059p4107290.html
Sent from the qooxdoo mailing list archive at Nabble.com.
------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing.
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel