2011-05-17 35 views
28

我正在尝试制作一个小应用程序,以了解Backbone如何工作。我从来源Todo采取示例应用程序。我使用Todo应用程序的片段从头创建了我的应用程序。我认为这些应用程序看起来非常相似,但出于某种原因,我无法在示例应用程序中正常工作。我得到一个错误:必须在Backbone.js中指定'url'属性或函数错误

A 'url' property or function must be specified 

的另一个问题是,我不能让从示例工作验证码:

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

它说,有没有这样的功能绑定。我检查了所有的库版本和代码,并没有意识到我做错了什么。我能做些什么呢?

+3

工作没有更多的代码,很难用URL错误来解释问题。对我来说最明显的一点是,它试图从后端服务器获取某些东西,并且它需要一个用于构建的URL,但是您没有提供。对于第二个错误,您的模型对象是骨干模型吗?把一个“console.log(this.model)”放在它上面的行上,在Firebug中查看它,并确定它是否具有绑定属性。 – 2011-05-17 14:26:45

回答

38

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

至于this.model.bind,我猜你失去了对你的模型的参考。两件事:是不是你认为它是或this.model没有定义。发布更多的代码以获得完整的答案。

+0

感谢提示,我现在将检查这些提示,并会告诉您是否解决问题。谢谢。 – 2011-05-18 06:49:48

+2

这与主干文档相矛盾:“生成表单的URL:”/[collection.url]/[id]“,如果模型不是集合的一部分,则回退到”/ [urlRoot]/id“。 – liammclennan 2012-02-20 05:00:33

+4

这个答案是针对主干0.3.x的,这个项目自去年开始发展起来...... – Julien 2012-02-21 16:23:32

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

0

分配到集合属性url我

todoList.url = "/GetData/GetTodo"; 
相关问题