【问题标题】:How to call fetch method of Backbone Collection passing Id如何调用通过 Id 的 Backbone Collection 的 fetch 方法
【发布时间】:2013-11-30 21:31:49
【问题描述】:

我想在 Backbone Collection 上触发 fetch 方法,该方法将传递一个类似于 Model.fetch(id) 中发生的 Id 参数

例如

var someFoo= new Foo({id: '1234'});// Where Foo is a Backbone Model
someFoo.fetch();

我的骨干收藏:-

var tasks = backbone.Collection.extend({
    model: taskModel,
    url: '/MyController/GetTasks',
    initialize: function () {
        return this;
    }
});

在我尝试获取数据时的视图中:-

var _dummyId = 10; //

// Tried approach 1 && It calls an api without any `id` parameter, so I get 500 (Internal Server Error).
this.collection.fetch(_dummyId); 


// Tried approach 2 && which fires API call passing Id, but just after that 
// I am getting error as below:- Uncaught TypeError: object is not a function
this.collection.fetch({
    data: {
        id: _dummyId
    }
});

很晚才发现:为了缩短上面的故事,我想要Get /collection/id in backbone之类的东西。

【问题讨论】:

  • 您为什么要通过在集合上调用 fetch() 来获取单个模型的数据?这没有意义。
  • 假设我有Department Details(主干模型),它有List<task>,我不需要触发一个GetTask api,它将有department id 作为参数并返回List<task> wrt DepartmentId..我可能对这个问题不太清楚..为此道歉!

标签: backbone.js backbone-views


【解决方案1】:

感谢大家的解答,终于从Backbone.js collection options得到了解决方案。

抱歉,我无法正确解释这个问题,而对于同样的要求,其他人已经出色而聪明地完成了。

解决方案:我可以有类似的东西:-

var Messages = Backbone.Collection.extend({
  initialize: function(models, options) {
    this.id = options.id;
  },
  url: function() {
    return '/messages/' + this.id;
  },
  model: Message,
});

var collection = new Messages([], { id: 2 });
collection.fetch();

感谢nrabinowitzLink to the Answer

【讨论】:

【解决方案2】:

正如 Matt Ball 所提到的,这个问题没有意义:要么调用 Collection 上的 fetch() 以从服务器中检索所有模型,要么调用具有 ID 的模型上的 fetch() 仅检索这个。

现在,如果由于某种原因您需要向 Collection.fetch() 传递额外的参数(例如分页信息),您总是可以在选项对象中添加一个“数据”键,并且可能会发生这种情况其中一个键是 id(+add 选项以添加此获取的模型,而不是仅用一个模型替换集合)......但这将是获取模型的一种非常迂回的方式。预期的方法是使用 id 创建一个新模型并获取它:

this.collection = new taskCollection();
newTask = this.collection.add({id: 15002});
newTask.fetch();

但是,在您的代码中,我看不到 ID 来自哪里,所以我想知道您希望 collection.fetch() 发送的“ID”参数中的内容是什么?

【讨论】:

  • 我收到this.collection.add() Uncaught TypeError: object is not a function 的错误
猜你喜欢
  • 2012-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多