【问题标题】:JavaScript: Backbone.js fetch json and load it into a collection of models?JavaScript:Backbone.js 获取 json 并将其加载到模型集合中?
【发布时间】:2012-03-01 08:55:39
【问题描述】:

到目前为止,我有以下代码,但它似乎没有工作,我不知道异步获取何时完成:

var item = Backbone.Model.extend({
    defaults: {
        id: 0,
        an_id: 0,
        strval: null,
        th_id: 0,
        text: null
    },
    url: 'page.php',
    options: {
        success: function(data) {
            alert('s: ' + dump(data));
            // the dump function is my way of dumping objects into a string,
            // use console.log if you want, as I have that disabled
        },
        error: function(x, t, e) {
            alert('e: ' + t + ', ' + e);
        }
    }
});

var coll = Backbone.Collection.extend({
    model: item
});

var options = new Options();
Backbone.sync("create", coll, item.options); // 'undefined' is not an object (evaluating c.url) in backbone-min.js

更新

我已经将原始代码修改为现在的代码,后端现在可以区分新建、更新、保存和删除请求。

我仍然不知道如何填充集合coll

【问题讨论】:

  • 这取决于你想做什么。通常,您需要将视图连接到模型并将视图的渲染方法绑定到模型触发的事件。如果您正在获取,请将重置事件绑定到您的视图渲染,因为一旦响应从服务器返回,重置将触发。
  • @kinakuta,我不知道该怎么做,谢谢!

标签: javascript collections model backbone.js extend


【解决方案1】:

Backbone.Collection 用于保留多个项目 - 您似乎试图让您的 Collection 从您的模型中“继承”,这不是正确的方法。

集合是有序的模型集。您可以绑定“更改”事件 当集合中的任何模型被修改时被通知, 监听“添加”和“删除”事件,从 服务器,并使用一整套 Underscore.js 方法。

【讨论】:

  • 正如我所指出的,我才开始使用这个库。对于如何(正确地)存储列表模型并监听更改、添加和删除事件以及获取可用集合的列表,您是否有明确的建议?
  • 我已经更新了我的代码,如何填充我的项目集合?
【解决方案2】:

您可以在 fetch 调用中添加成功处理程序。试试这个:

coll.fetch({
        success: function() {
            alert("success");
            console.log(coll.toJSON());
        },
        error: function(){
            alert("error")}
    });    

【讨论】:

  • 调用成功处理程序,但toJSON()函数显示一个空字符串。
  • 听起来您的 api 调用配置不正确。我想问您是否可以进入浏览器中的开发人员工具以查看进行了哪些网络调用,查看您的调用返回了什么。测试 api 调用的另一个有用工具是:(对于 chrome)google.com/…
  • 我已经更新了我的代码,如何填充我的项目集合?
猜你喜欢
  • 1970-01-01
  • 2012-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多