javascript - 从 URL 问题获取模型

标签 javascript jquery backbone.js

我有一个主干 js 应用程序,它有一个看起来像这样的路由器:

var StoreRouter = Backbone.Router.extend({
   routes: {
      'stores/edit/:id': 'edit'
   },
   edit: function(id){
      var store = new Store({id: id});
      store.fetch({success: function(){
          var editStoresView = new EditStoresView({
                el: ".wrapper",
                model: store
          });
      }});
   }
});
var storeRouter = new StoreRouter();
Backbone.history.start({ pushState: true, hashChange: false });

我的模型看起来像:

var Store = Backbone.Model.extend({
   urlRoot: function(){
      if (this.isNew()){
          return "/stores";
      } else {
          return "/stores/" + this.id;
      }
   }
});

在 Chrome 的 JS 控制台中,显示有一个针对 /stores 网址的 GET 请求,而它应该向 /stores/ID_HERE 发出请求>.

最佳答案

主干uses a model's id field to determine if it's new or not ,并且在构建它时将其传递进去。

您可以跳过一些步骤在编辑时延迟加载模型 - 也就是说,在尝试编辑时仅获取 - 但更改您的urlRoot可能更容易> 属性为简单的“/stores/”。 Backbone will use that urlRoot property, along with the model's ID, to construct the URL 。这是有道理的;如果您有一个 id 为 3 的 Store 模型,则无论其"new"状态如何,您都需要点击“/stores/3”来加载它。

如果您怀疑您的应用可以构建没有 ID 的 Store,您可能需要覆盖 Storeurl如果在没有 ID 的模型上调用该函数,则会抛出异常。

关于javascript - 从 URL 问题获取模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24658707/

相关文章:

javascript - 存储服务器端倒计时变量

javascript - jQuery Preventdefault() 函数不起作用

jQuery FullCalendar 不解析 json

javascript - 为什么 margin 仅在 .info 处于事件状态时适用

javascript - 重新渲染 subview 后 Backbone 事件多次触发

javascript - 将数据加载到本地存储一次?

javascript - History PushState API 不支持 url 中的长片段

php - 如何通过 AJAX 从 PHP 文件返回 JavaScript?

FireFox 中的 Javascript cloneNode 问题

javascript - 当鼠标悬停在固定位置 div 上时滚动