0

我知道有很多关于这个的问题,我已经通过这些答案解决了第一个问题。我决定不污染我的全局命名空间并使用这种类型的解决方案。但是现在我有一个与相同框架相关的不同问题。我的模型是这样开始的。

define([
'backbone',
'backbone.relational'
], function(Backbone){

var MenuNode = function () {
    Backbone.RelationalModel.apply(this,arguments);
}

var NodeCollection = function() {
    Backbone.Collection.apply(this,arguments);
}

MenuNode = Backbone.RelationalModel.extend({
    constructor: MenuNode,

    relations:[
        {
            type: Backbone.HasMany,
            key: "children",
            relatedModel: MenuNode,
            collectionType: NodeCollection,
            reverseRelation: {
                key: "parent"
            }
        }
    ]
})

NodeCollection = Backbone.Collection.extend({
    constructor: NodeCollection,
    model: MenuNode,
    url: function() {
        return "/nodes"
    }
})

这将为我的应用程序创建必需的模型,这是一个 jstree。但我的问题是如何创建与 api 和我的关系的连接,以及如何使用主干获取节点的当前子节点。我有api:

 nodes/            returns the root nodes in a simplified version
 nodes/id          returns the full info about node, with children and parent simplified
 nodes/id/children returns the simplified version of the children of a specific node

但是如何通过主干获取特定节点的当前子节点?当我想加载孩子而不是预加载孩子时,我希望能够拨打电话。我试图为请求保存服务器。因为有一个大的树视图,意味着它不需要加载整个树。

只需提出任何问题以澄清更多信息。提前谢谢

4

2 回答 2

0

您应该能够通过使用字符串文字作为相关模型来完成此操作:

relations:[
    {
        type: Backbone.HasMany,
        key: "children",
        relatedModel: 'MenuNode',
        collectionType: NodeCollection,
        reverseRelation: {
            key: "parent"
        }
    }
]
于 2013-07-04T19:54:01.287 回答
0

我发现我的 api 很奇怪。我有一个 egde 案例,假设我的 jstree 由 Backbone 支持,而不是 jstree ajax 本身。因为我必须根据主干来看待观点,我希望他们能够相互合作。

这个修改已经完成了,但是不在关系模型部分。当直接指向一个节点时,它在我的后端并为孩子们服务,这有助于我正确地构建模型。

所以它可以工作,但是 jstree 不支持骨干网

于 2013-07-24T08:28:56.937 回答