我一直在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
});
感谢
仍然不起作用..它只显示一个项目,下面没有标签,我无法打开它看到它的孩子。错误:“未捕获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);
答案 0 :(得分:2)
交叉发布到qooxdoo用户列表。
我找到了一个很好的例子: http://demo.qooxdoo.org/current/demobrowser/#data~JsonToTree.html
在那里你可以看到,如何将JSON存储绑定到TreeController。
在演示浏览器中,您将找到更多示例。
编辑:请检查您的JSON文件中是否有根节点。我们示例的JSON文件包含一个根节点。这可以解释为什么根节点为空,在您的代码片段中。