gpt4 book ai didi

javascript - 解析执行后无法读取未定义的属性 'idAttribute'

转载 作者:行者123 更新时间:2023-11-30 00:24:44 26 4
gpt4 key购买 nike

我认为我的问题出在解析函数中:

/*global define */
define([
'jquery',
'underscore',
'backbone',
'models/article'
], function ($, _, Backbone, Article) {
'use strict';

var Articles = Backbone.Collection.extend({
model: Article,
url: "http://127.0.0.1:3000/posts",

initialize: function() {
},

parse: function(response) {
return response;
}
});

return new Articles();
});

执行解析函数后出现这个错误:

Uncaught TypeError: Cannot read property 'idAttribute' of undefined

例如,当我设置 return response.somthing 时;而不是返回响应;没有错误信息。

这是响应对象:

[
{
"name": "test",
"description": "test",
"price": 0,
"category": "test",
"id": 0
},
{
"name": "test",
"description": "test",
"price": 0,
"category": "test",
"id": 1
},
{
"name": "test",
"description": "test",
"price": 0,
"category": "test",
"id": 2
},
]

这是我的模型声明:

define([
'jquery',
'underscore',
'backbone'
], function ($, _, Backbone) {
'use strict';

var Article = Backbone.Model.extend({

defaults: {
name: '',
description: '',
price: 0,
category: ''
},

initialize: function() {
}

});

return new Article();
});

最佳答案

查看客户端(例如,syncfetch 实际驻留的位置)会很有帮助,但我会冒险进行以下操作:

parse 函数将 response 作为参数并返回它。

response 是服务器以 JSON 形式返回的内容。

Backbone 模型不仅仅是它的 JSON 表示;它包装了 JSON 并赋予它更多功能(例如 idAttribute)。

因此,通过返回 response,您只是返回一些数组(基于您发布的 response)。

我不使用parse,而是让默认方法做它做的任何事情,因为看起来您的response 已经准备好进行解析了。

我要做的是首先从您的 defined 模块中为 ArticleArticles 返回类型而不是实例:

models/article.js

return Article; // not return new Article;

在您的集合定义中

return Articles; // not return new Articles;

现在,来自您的客户:

var articlesCollection = new Articles();

你获取集合:

articlesCollection.fetch({
success: function(collection, response) {
// now collection is a reference to articlesCollection and it will have models in it collection.models
},
error: function(collection, response) {
}

当您这样做时,默认情况下您将拥有以下类型的模型:

collection.at(0)

Article
attributes: { all your properties from the JSON of each object }

这是否澄清了一切?

关于javascript - 解析执行后无法读取未定义的属性 'idAttribute',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31854494/

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