0

我们正在使用骨干集合从文件中加载 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*
} 

此代码不起作用..

4

1 回答 1

2

你在这方面的逻辑有一些谬误。此处适用的示例是将 url-attribute 定义为data.json. 当您获取时会发生什么,Backboneajax对该 url 发出 -request(偶然发现您的文件)并在那里返回内容(您的 json 数据)。

现在你的第二次尝试是一切都出错了。首先:

url: this.return(cool_cont());

我不知道这是做什么的(或更可能不做什么),我也不想知道。url-attribute/function 的基本前提是它旨在

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

-引自Backbone.js 文档(真实故事)

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

所以 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);

希望这可以帮助!

于 2012-08-14T10:22:07.380 回答