【问题标题】:A 'url' property or function must be specified error in Backbone.jsBackbone.js 中必须指定“url”属性或函数错误
【发布时间】:2011-05-17 12:19:59
【问题描述】:

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

A 'url' property or function must be specified

另一个问题是我无法使示例中的这段代码工作:

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

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

【问题讨论】:

  • 如果没有更多代码,就很难解释 URL 错误的问题。对我来说,最明显的是它试图从后端服务器获取一些东西,它在构建时需要一个 URL,但你还没有提供。对于第二个错误,您的模型对象是骨干模型吗?在上面一行放一个“console.log(this.model)”,在Firebug中查看,判断是否有绑定属性。

标签: javascript jquery html backbone.js


【解决方案1】:

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

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

【讨论】:

  • 感谢您的提示,我现在会检查这些,如果我解决了问题会通知您。谢谢。
  • 这与骨干文档相矛盾:“生成以下形式的 URL:“/[collection.url]/[id]”,如果模型不是,则回退到“/[urlRoot]/id”集合的一部分。”
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

    分配给集合属性 url 对我有用

    todoList.url = "/GetData/GetTodo";
    

    【讨论】:

      猜你喜欢
      • 2012-04-22
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 2014-12-11
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      相关资源
      最近更新 更多