大家好!
美好的一天!我开始调整 Backbone.js 框架,并且我对模型的 URL 有一个模糊的理解:
var TodoItem = Backbone.Model.extend({
urlRoot: 'http://localhost:3354/api/todo/GetAllTodo' // this guy right here
}
影响集合的 URL - 一旦在集合中使用了所述模型:
var TodoList = Backbone.Collection.extend({
model: TodoItem,
url: 'http://localhost:3354/api/todo/DosomethingElse' //Conflict of URL?
}
最后,当我尝试 model.fetch()
时,该服务通过 [{}]
格式返回数据的 JSON 表示形式,这使得我的模型具有一个 object
属性,它包含返回的实际 json 数据 - 这是一个问题 - 因为模型旨在用于单个记录而不是 array[]
数据。
感谢您抽出宝贵时间,非常感谢您对此提供的帮助。
最佳答案
如果您检查 Model.url
的 Backbone 源代码, 你会看到模型的 url base 是由
var base = _.result(this, 'urlRoot') || _.result(this.collection, 'url');
这意味着当您执行 model.fetch()
TodoItem.urlRoot
优先于 TodoList.url
您可以使用 parse
提取所需的格式:
var TodoItem = Backbone.Model.extend({
urlRoot: 'http://localhost:3354/api/todo/GetAllTodo',
parse: function(data) {
return data[0];
}
}
关于javascript - Backbone.js - 模型 URL 与集合 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17838903/