如何将树绑定到qooxdoo中的模型?那应该是什么格式?

时间:2012-02-28 12:09:45

标签: tree qooxdoo

我一直在Google上搜索但没有帮助。

我想知道如何将树与模型或商店绑定,我甚至不知道哪一个更合适(http://manual.qooxdoo.org/1.6.x/pages/data_binding/data_binding html的)。

我有一个服务,它从数据库中提取数据并将数据保存在商店中。

this.__store = new qx.data.store.Json(url, delegate);
this.__store.bind("model", this, "testData");

服务更新后,将发送一个事件,我正在听它:

  service.addListener("changeTestData", function(e) {
    this.debug(qx.dev.Debug.debugProperties(e.getData()));
    var tree = main.tree;
  }, this);

我不知道这是否是正确的做法。我想不是,但我不知道如何将模型/服务/商店绑定到树上以便工作。

我的树:

    var tree = this.tree = new qx.ui.tree.Tree().set({
      width : 200,
      height : 400
    });

感谢

UPDATE:

仍然不起作用..它只显示一个项目,下面没有标签,我无法打开它看到它的孩子。错误:“未捕获qx.core.AssertionError:错误” 我的数据格式:

[{_id:3423, title:"asdad", kids: []}] and so on...
-index(0): 
-- title: abc
-- _id: 4f4cea3e4b58dffc04000001
-- kids: 

-index(1): 
-- title: abc
-- _id: 4f4cea3e4b58dffc04000002
-- kids: ---index(0): 
---- title: abc
---- _id: 4f4cea3e4b58dffc04000001
---- kids: 

这是我的代码:

  var url = "http://127.0.0.1:8000/";
  var delegate = { 
    configureRequest : function(request) { 
      request.set({ 
        "method"      : "POST", 
        "requestData" : { 
          "serviceToUseOnServer" : "articles"
        } 
      }); 
    }, 
  };

  var status = new qx.ui.basic.Label("Loading...");
  var store = new qx.data.store.Json(url, delegate);
  store.bind("state", status, "value");

  var tree = new qx.ui.tree.Tree().set({
    width : 200,
    height : 400
  });
  var controller = new qx.data.controller.Tree(null, tree, "kids", "title");
  store.bind("model", controller, "model");

  main.add(tree, {top: 50, left: 200});
  main.add(status, {top: 50, right: 200});

  store.addListener("loaded", function(e) {
    // now I can't even reach this point. the error spawns and this is not called..
    debugger;
    var root = tree.getRoot();
    // tree.getRoot().setOpen(true);
    // gives me an error because root is null
    this.debug(qx.dev.Debug.debugProperties(e.getData()));
  }, this);

1 个答案:

答案 0 :(得分:2)

交叉发布到qooxdoo用户列表。

我找到了一个很好的例子: http://demo.qooxdoo.org/current/demobrowser/#data~JsonToTree.html

在那里你可以看到,如何将JSON存储绑定到TreeController。

在演示浏览器中,您将找到更多示例。

编辑:请检查您的JSON文件中是否有根节点。我们示例的JSON文件包含一个根节点。这可以解释为什么根节点为空,在您的代码片段中。