骨干模型获取 - 模拟后端

时间:2012-11-11 23:00:50

标签: javascript ajax backbone.js

我有一个模型,我正在尝试使用model.fetch();来获取它。模型的urlRoot设置为我的应用程序的后端(“/ backend / item”),但是现在我没有后端环境。所以我决定嘲笑结果。我在路由器中添加了一条路线:

"backend/item/:id": "data_getItem"

和一个功能:

data_getItem: function(id) {
  console.log("data_getItem: "+ id);
  return {
    animals: [
      {
        name: 'flying cat',
        type: 'none'
      }
    ]
  };
}

运行应用程序时,我可以看到ajax调用“http://127.0.0.1:8000/backend/item/1”,但控制台为空,我收到错误(fetch函数返回错误回调)。这是为什么?我怎么能嘲笑后端?

  

EDIT   实际上@rjz帮助我做了我想做的事情,但我真的想知道是否可以通过骨干路由器捕获ajax调用。   我的直觉告诉我,不是因为ajax调用不能执行骨干客户端代码,因此路由器概念不相关。我是对的吗?..

1 个答案:

答案 0 :(得分:0)

我认为您不想使用Backbone.Router来捕获您的AJAX调用。如果您的目标是模拟项目的后端,则应使用测试框架来执行此操作。一种潦倒的方式是使用类似的东西:

或者如果你想做更像单元测试的事情,我会看Jasmine及其AJAX mocking library

更新以回答您的问题:

简短的回答是否定的,Backbone.Router无法拦截AJAX调用。

这是因为路由器通过侦听与URL有关的事件来工作。具体来说,路由器正在监听hashchangepopstate事件(取决于您使用的是pushState)。由于AJAX调用不与URL交互,因此它们几乎完全绕过了这个系统。