2

我正在使用backbone.js 和Apache-CXF Rest-ful webservice。

我有一个树状结构(父子关系)的节点。

用户可以从前端 (UI) 为任何节点创建子节点。

那时我想打什么 REST 电话?

选项是:

  1. 一个 PUT(更新)父请求,我可以调用来更新父,到后端。

  2. POST(创建)子请求,我可以从后端调用创建子请求。

我的疑问是,我想使用这两个调用还是有更好的方法?

var TreeModel = Backbone.Model.extend({

    defaults : {

        id : undefined,

        name : "", 

        children : [] 

    },

    urlRoot : '/api/tree'

});

是我的模特。

在我的 js 代码中,我使用了:

   var parent = new Treemodel();

   ..... (some operations)  .....

   var child1 = new Treemodel();

   child1.save();

   parent.children.push(child1);

   parent.save();

有没有更好的方法?

4

1 回答 1

1

如果它对您有用,那么您的方法看起来还不错。

我想到的另一个选择(虽然不比你的好多少)是只将子节点保存到服务器,然后fetch()是父节点。这简化了您的客户端代码逻辑。

代码将是这样的:

var parent = new Treemodel();

[...]

var child1 = new Treemodel();

child1.save({
    success: function () {
        parent.fetch();
    }
});

无论如何,我建议您仅在子创建成功时通过添加“成功”回调来保存父级。您的代码将如下所示:

var parent = new Treemodel();

[...]

var child1 = new Treemodel();

child1.save({
    success: function () {
        parent.children.push(child1);
        parent.save();
    }
});
于 2013-11-05T11:25:49.370 回答