Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js多个回调API_Backbone.js - Fatal编程技术网

Backbone.js多个回调API

Backbone.js多个回调API,backbone.js,Backbone.js,我有一个(书籍)集合,允许用户深入到一本书中,编辑它并将其添加/删除到收藏夹中 虽然书籍的基本CRUD在Backbone.js中非常简单,但我不太清楚如何为添加/删除用户收藏夹中的书籍进行单独的api调用 我能想到的最好办法就是破解sync方法,检查特定变量的选项,然后触发不同的api调用。这是可行的——但我完全不确定这是否是正确的做事方式 有什么建议吗?你可以使用两本书:一本是所有的书,一本是最喜欢的书。 它可以是同一个集合类,但对于收藏夹,您可以将“url”-属性从“/books”或其他更改

我有一个(书籍)集合,允许用户深入到一本书中,编辑它并将其添加/删除到收藏夹中

虽然书籍的基本CRUD在Backbone.js中非常简单,但我不太清楚如何为添加/删除用户收藏夹中的书籍进行单独的api调用

我能想到的最好办法就是破解sync方法,检查特定变量的选项,然后触发不同的api调用。这是可行的——但我完全不确定这是否是正确的做事方式


有什么建议吗?

你可以使用两本书:一本是所有的书,一本是最喜欢的书。 它可以是同一个集合类,但对于收藏夹,您可以将“url”-属性从“/books”或其他更改为“/books/favorite”或任何您喜欢的

var books = new BookCollection({url: "/books"})
var favorites = new BookCollection({url: "/books/favorite"});

我想可能还有很多其他的解决方案,但那将是我的方法。

你可以使用两个集合:一个集合所有的书,一个只集合最喜欢的书。 它可以是同一个集合类,但对于收藏夹,您可以将“url”-属性从“/books”或其他更改为“/books/favorite”或任何您喜欢的

var books = new BookCollection({url: "/books"})
var favorites = new BookCollection({url: "/books/favorite"});

我想可能还有很多其他的解决方案,但那将是我的方法。

我不确定你适合以下哪种情况,但希望它们能指导你

1) 您可以编写如下代码,而不是从主干修改
sync
方法

url: function() {
  if (updateFavorite)
    return '/books/favorite';
  else
    return '/books';
}

2) 在大多数其他情况下,当您在单个模型上执行CRUD操作时,生成的url类似于
collection.url+model.id
,您可以阅读更多内容。

我不确定您适合以下哪种情况,但希望它们能指导您

1) 您可以编写如下代码,而不是从主干修改
sync
方法

url: function() {
  if (updateFavorite)
    return '/books/favorite';
  else
    return '/books';
}

2) 在大多数其他情况下,当您在单个模型上执行CRUD操作时,生成的url类似于
collection.url+model.id
,您可以阅读更多内容。

我的想法是,每个BookModel都必须嵌套一个FavoriteBookModel

共享创建嵌套模型的代码,还使用bookId作为嵌套模型中的外键关联模型

 var BookModel = Backbone.Model.extend({
    url : '/books',
    initialize : function(){
        this.favoriteModel = new FavoriteBookModel();
        this.on('change', this.changeHandler);
        this.changeHandler();
    },
    changeHandler : function(){
        this.favoriteModel.set({ bookId : this.get('id')});
    }
  });

  var FavoriteBookModel = Backbone.Model.extend({
    url : function(){
        return '/books/'+this.get('bookId')+'/favorite';
    },
  });  

我的想法是,每个BookModel都必须嵌套一个FavoriteBookModel

共享创建嵌套模型的代码,还使用bookId作为嵌套模型中的外键关联模型

 var BookModel = Backbone.Model.extend({
    url : '/books',
    initialize : function(){
        this.favoriteModel = new FavoriteBookModel();
        this.on('change', this.changeHandler);
        this.changeHandler();
    },
    changeHandler : function(){
        this.favoriteModel.set({ bookId : this.get('id')});
    }
  });

  var FavoriteBookModel = Backbone.Model.extend({
    url : function(){
        return '/books/'+this.get('bookId')+'/favorite';
    },
  });