必须在Backbone.js中指定'url'属性或函数错误

时间:2011-05-17 12:19:59

标签: javascript jquery html backbone.js

我正在尝试创建一个小应用程序来了解Backbone的工作原理。我从名为Todo的来源获取了示例应用程序。我使用Todo应用程序的片段从头开始创建我的应用程序。我认为这些应用程序看起来非常相似,但由于某些原因,我无法在示例应用程序中使用一些正常工作的东西。我收到一个错误:

A 'url' property or function must be specified

另一个问题是我无法从示例工作中创建此代码:

this.model.bind('change', this.render);

它说没有绑定这样的功能。我检查了所有的库版本和代码,无法实现我的错误。我该怎么办?

3 个答案:

答案 0 :(得分:38)

TODO示例依赖于localStorage,因此它没有定义url(因为它是本地的)。但是,当您使用默认的Backbone.sync实现时,您需要在集合和模型上定义url属性(它可以是静态或函数)。不这样做会导致你得到的错误。

至于this.model.bind,我猜你以某种方式丢失了对模型的引用。两件事:这个不是你想象的那样,或者 this.model 没有被定义。发布更多代码以获得完整的答案。

答案 1 :(得分:3)

该集合尝试从URL上的json输出加载一堆模型:

window.MyList = Backbone.Collection.extend({
  model: MyModel,
  url: 'someurl.json', // load a bunch of json objects into models.
});

如果该URL指向模型的json输出,那么你就可以了。

您还可以覆盖集合向服务器进行静态回调以支持旧服务器或本地存储适配器的方式:http://documentcloud.github.com/backbone/#Sync

答案 2 :(得分:0)

分配到集合属性url为我工作

todoList.url = "/GetData/GetTodo";