gpt4 book ai didi

javascript - Backbone.js:使用 Ajax 将数据绑定(bind)到 Collection?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:36:45 25 4
gpt4 key购买 nike

我刚刚开始使用 Backbone.js。我想创建一个集合并从外部源添加一些数据。

数据目前实际上是 CSV 格式,而不是 JSON,但如果这样会更容易的话,我可以用 JSON 格式重新呈现它。

那么,两个问题:

  1. 在何处将外部数据绑定(bind)到集合?如果我没有指定 url 属性,它会提示,但我并没有真正想到 URL - 我正计划通过 Ajax 绑定(bind)数据。
  2. 我是否应该以 JSON 而不是 CSV 格式重新呈现我的数据,并使用集合的 url 属性来加载它?

我只是尝试将数据直接加载到集合中,而不是通过 url 属性:

var Cat = Backbone.Model.extend({});
var CatCollection = Backbone.Collection.extend({
model: Cat
});
var ajaxData = { 'breed' : 'persian' } // simple example of external data
var catCollection = new CatCollection(ajaxData);
catCollection.fetch();

但这给出了一个错误:Uncaught Error: A "url"property or function must be specified

最佳答案

使用在别处创建的数组初始化/重置您的集合,而不使用集合的 fetch 方法

var ajaxData = [{ 'breed' : 'persian' }]; // Backbone.Collection expects an array
var catCollection = new CatCollection(ajaxData);
// catCollection.fetch(); fetch will try to update the data from the server

或者使用内置的 url/parse 来构建你的模型

var CatCollection = Backbone.Collection.extend({
model: Cat,
url: "your ajax source",
parse: function (csv) {
//convert your csv in an array of objects
return csvtoarray;
},
fetch: function (options) {
options = options || {};
options.dataType = "text";
return Backbone.Collection.prototype.fetch.call(this, options);
}
});
var catCollection = new CatCollection();
catCollection.fetch();

将服务器端数据转换为 JSON 可能比尝试在 JS 中编写 CSV 解析器更容易。

关于javascript - Backbone.js:使用 Ajax 将数据绑定(bind)到 Collection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9064768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com