javascript - 将我的 'IDs' 动态加载到我的 Backbone Collection 中?

标签 javascript jquery backbone.js

好的,我已经通过此处发布的另一个问题的答案解决了这个问题,但我正在尝试做更多的事情。我的主干设置如下,

var MyModel= Backbone.Model.extend();

var MyCol = Backbone.Collection.extend({
model : MyModel,
url: '/GetData/2',
parse: function(response) {
  return response;
    }
});

var stuff = new MyCol;

stuff.fetch({
   success: function (collection, response) {
        console.log(response);
   }
})

现在这段代码完全可以工作了。现在解释一下,URL是用PHP Slim设置的,它返回JSON编码数据,其中将有四个key/pair 分组,例如:

<code> { id; XX, data: XX, another:XX, last:YY } </code>

该数据是从数据库接收的,现在我应该如何动态地执行此操作?我的意思是,在我的集合中的 URL' 行上,它传递 2 作为当前 ID。我怎样才能让backbone调用我需要的每个ID,目前数据库中有6列表。所以我需要它显示/控制台日志(当前用于测试)所有6输入,那么我如何将ID输入更改为 1-6?我应该只使用 for loo 吗?我真的想要一些不需要更改的东西,如果从数据库中删除列表或添加更多列表的话?

最终目标是将此 JSON 数据 加载到我的 Backbone View 中,这是 的模板 >表单

欢迎所有帮助,

谢谢

格伦

P.S 抱歉,如果我的拼写错误,我有诵读困难,也可能没有正确解释事情,所以请告诉我,我会改进我的措辞,谢谢。

编辑

这就是我现在正在处理的::

 var AdminModel = Backbone.Model.extend({
   defaults: {},
   urlRoot: '/GetData'

 });

 var AdminColModel = Backbone.Collection.extend({
model : AdminModel,
url: '/',
parse: function(response) {
  //console.log(response);
  return response;
    }
});

 var stuff = new AdminColModel;

  stuff.fetch({
    success: function (collection, response) {
     console.log(collection);
   } 
 })

控制台根本不记录任何内容?但是 PHP 已设置且工作正常,因此当您转到 /getData 时,您将获得数据库中所有行的完整列表。当您查看/getData/X <- X 是 ID 号时,将仅返回该行 ID 数据。

格伦

最佳答案

您不应在产品系列级别对​​产品系列中的每个模型提出单独的请求。默认情况下,您为集合设置的 URL 应请求所有模型。所以不是这样:

 '/GetData/2'

它应该是:

 '/GetData'

然后在服务器端,您应该确保 GetData 操作返回所有 MyModels

然后,您可以为 GetData 编写重写,该重写采用参数来返回单个模型或过滤结果。您将对单个模型检索特别感兴趣,它应该是模型级别使用的 URL。事实上,您已经有了这个操作,因为您正在使用它(错误地)来检索集合。这是与 /GetData/2 URL 关联的操作。此操作应该是您在模型内调用 fetch 时使用的操作,而不是集合。

希望这有帮助。

帖子编辑

添加一些代码来提供帮助。

var AdminModel = Backbone.Model.extend({
    urlRoot: '/GetData'
});

var AdminCollection = Backbone.Collection.extend({
    model : AdminModel,
    url: '/GetData'
});

var wholeCollection= new AdminCollection();

// the fetch method on the collection uses the AdminCollection.url property
wholeCollection.fetch({
    success: function (collection) {
        console.log(collection); // will output collection object to console
    } 
});

// this model does not exist in any collection
var modelOutsideCollection = new AdminModel({}, { id: "2" });

// because the model is not in a collection, fetch uses the AdminModel.urlRoot proeprty
modelOutsideCollection.fetch({
    success: function (model) {
        console.log(model); // outputs a single model with id of 2 to collection
    } 
}); 

关于javascript - 将我的 'IDs' 动态加载到我的 Backbone Collection 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22836706/

相关文章:

jquery - 使用 $.ajax url 传递多个参数

backbone.js - 为什么我需要对 Backbone.js 自定义事件使用 Underscore.js _.bind 方法?

javascript - Browserify+Backbone.js "ApplicationState"共享模块

javascript - Angular 组件启动时初始化函数的模式

javascript - 如何防止脚本在移动设备上运行?

javascript - 如何使显示文本成为多语言?

jquery - Ajax 调用无需重新加载页面?

validation - 使用 Backbone.js 验证时如何处理异步调用(特别是唯一性)

javascript - 从 ES6 生成器创建数组

javascript - 如何在textarea中追加表格