javascript – Backbone set collection属性(用于url)

前端之家收集整理的这篇文章主要介绍了javascript – Backbone set collection属性(用于url)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要将一个id传递给一个集合以便在url中使用(例如/user/1234/projects.json),但我不知道如何做到这一点,一个例子会很精彩.

我的应用程序结构的方式是在启动时拉出并呈现“用户”的集合,然后我想在单击用户时将他们的“文档”从服务器拉到新集合中并在新视图中呈现.问题是将用户标识放入文档集合中以提供documents.fetch()的相关URL.

我想我已经知道了,这是一个例子:

  1. //in the the view initialize function
  2. this.collection = new Docs();
  3. this.collection.project_id = this.options.project_id;
  4. this.collection.fetch();
  5.  
  6. //in the collection
  7. url: function() {
  8. return '/project/api/' +this.project_id+'/docs';
  9. }

解决方法

您的用户集合网址应设置为/ user.一旦设置完毕,你的模型应该利用该网址来实现他们的魔力.我相信(并非完全正面)如果模型在集合中,调用’url’方法将返回/ user /:id.因此,所有典型的REST-ish功能都将用于’/ user /:id’.如果你试图用关系做某事(用户有很多文件),那就是冲洗和重复.那么,对于您的文档集合(这对用户来说是否正确?),您需要将URL设置为“user_instance.url / documents”.

显示与骨干模型的一对多关系,您可以执行以下操作(针对urlRoot升级到主干0.5.1):

  1. var User = Backbone.Model.extend({
  2. initialize: function() {
  3. // note,you are passing the function url. This is important if you are
  4. // creating a new user that's not been sync'd to the server yet. If you
  5. // did something like: {user_url: this.url()} it wouldn't contain the id
  6. // yet... and any sync through docs would fail... even if you sync'd the
  7. // user model!
  8. this.docs = new Docs([],{user_url: this.url});
  9. },urlRoot: '/user'
  10. });
  11.  
  12. var Doc = Backbone.Model.extend();
  13.  
  14. var Docs = Backbone.Collection.extend({
  15. initialize: function(models,args) {
  16. this.url = function() { args.user_url() + '/documents'; };
  17. }
  18. });
  19.  
  20. var user = new User([{id: 1234}]);
  21. user.docs.fetch({ success: function() { alert('win') });

猜你在找的JavaScript相关文章