Backbone Collection URL功能

时间:2012-08-14 09:15:51

标签: backbone.js

我们正在使用骨干集合从文件加载JSON。现在,如果我采用相同的文件内容并将其放入数组并调用url函数,似乎没有任何工作..你能帮忙..

var cool = {};
cool.Item = Backbone.Model.extend({});
cool.Items = Backbone.Collection.extend({
        model: cool.Item,
                url: "data.json"

此代码有效

var cool = {};
cool.Item = Backbone.Model.extend({});
cool.Items = Backbone.Collection.extend({
        model: cool.Item,
                url: this.return(cool_cont());

function cool_cont()
{
* JSON object*
} 

此代码不起作用..

1 个答案:

答案 0 :(得分:2)

你的逻辑有一些谬误。此处有效的示例是您将url-attribute定义为data.json。当您获取时会发生什么,Backbone会为该URL发出ajax - 请求(绊倒您的文件)并返回其中的内容(您的json数据)。

现在你的第二次尝试就是出现问题。首先:

url: this.return(cool_cont());

我不知道这是做什么(或者更有可能不做),我不想知道。 url-attribute / function的基本前提是它意味着

  

在集合上设置url属性(或函数)以引用其在服务器上的位置。

- 来自Backbone.js docs(真实故事)

的报价

所以你在这里做的是你传递你想要填充你的集合的数据作为它在服务器上的位置的引用(坦率地说,我认为你甚至没有这样做),这是完全错误的。

所以url == path_to_your_data_be_it_url_or_file

url可以是字符串(也称为静态路径)或函数(例如,使用模型的某些属性创建路径作为其一部分)。

如果您想在集合中插入一些虚假数据,而您不想使用外部文件,请执行以下操作:

var json_data = [
  {"foo": "bar"}, // model 1
  {"foo": "bar2"}, // model 2
  ...
  {"foo": "barN"}, // model N
];

var options = {...}; // optional

var myCollection = new MyCollection(json_data, options);

希望这有帮助!