Javascript 指定了集合的URL,但返回错误
我在myapp.com/groups上有一个类似这样的集合:Javascript 指定了集合的URL,但返回错误,javascript,backbone.js,marionette,Javascript,Backbone.js,Marionette,我在myapp.com/groups上有一个类似这样的集合: [ { "_id": "52dd2bd1044bf96a12ed2319", "name": "US", "id": 1, "users": [] }, { "_id": "52dd2bd1044bf96a12ed231b", "name": "BR", "id": 3, "users": [] }, { "_id": "52dd2bd1044
[ {
"_id": "52dd2bd1044bf96a12ed2319",
"name": "US",
"id": 1,
"users": [] }, {
"_id": "52dd2bd1044bf96a12ed231b",
"name": "BR",
"id": 3,
"users": [] }, {
"_id": "52dd2bd1044bf96a12ed231c",
"name": "SK",
"id": 4,
"users": [] }, {
"_id": "52dd2bd1044bf96a12ed231d",
"name": "CZ",
"id": 5,
"users": [] }, {
"_id": "52dd2bd2044bf96a12ed231e",
"name": "UK",
"id": 6,
"users": [] } ]
groups = new Groups();
groups.fetch();
然后我有主干模型和集合:
Group = Backbone.Model.extend({
urlRoot: 'groups',
});
Groups = Backbone.Collection.extend({
url: 'groups',
model: Group
});
我想创建一个集合实例,如下所示:
[ {
"_id": "52dd2bd1044bf96a12ed2319",
"name": "US",
"id": 1,
"users": [] }, {
"_id": "52dd2bd1044bf96a12ed231b",
"name": "BR",
"id": 3,
"users": [] }, {
"_id": "52dd2bd1044bf96a12ed231c",
"name": "SK",
"id": 4,
"users": [] }, {
"_id": "52dd2bd1044bf96a12ed231d",
"name": "CZ",
"id": 5,
"users": [] }, {
"_id": "52dd2bd2044bf96a12ed231e",
"name": "UK",
"id": 6,
"users": [] } ]
groups = new Groups();
groups.fetch();
但我总是会出错:
未捕获的TypeError:对象[object object]的属性“url”不是函数
正如Puigcerber所指出的,最可能的原因是您没有在url组前面加上正斜杠。主干网对一些事情非常固执己见,url属性就是其中之一。尝试将组集合的url属性更新为/Groups 这可能是一个意外的主干。正如Rocky Lee所说,同步覆盖,但我敢打赌,这是一个激怒主干神的url属性。试试这个 javascript
var Group = Backbone.Model.extend({});
var Groups = Backbone.Collection.extend({
model: Group,
url: "groups",
parse: function(data) {
return data;
}
});
var GroupView = Backbone.View.extend({
el: $("#page"),
initialize: function() {
},
render: function() {
var that = this;
this.collection = new Groups();
this.collection.fetch({
type: "GET",
contentType: 'application/json',
dataType: "json",
success: function(collection, response) {
var template = _.template(yourViewTemplate, {
groups: that.collection.models
});
that.$el.html(template);
},
error: function(collection, response) {
alert("error");
}
});
}
});
html
您可以尝试在url:“/groups”之前添加斜杠,您是否覆盖过集合的同步方法?我想可能有错误。我没有覆盖集合的同步并使用斜杠url:“/groups”,但错误仍然是一样的。您使用什么主干插件?我使用的是Backbone.maironette和Backbone.syphon。我有斜杠url:“/groups”,我正在使用新下载的Backbone.js和Marionette.js,我没有在我的应用程序中扩展Backbone.Sync。很有趣。。。我从未使用过木偶网,尽管我一直想使用。如果我现在是你,我会通过删除应用程序中的任何和所有复杂性来调试它。禁用/注释出木偶,并使用运行应用程序所需的绝对最小值进行尝试。在不删除所有变量的情况下进行调试要困难得多。我仍然有一个错误-Uncaught TypeError:object[object object]的属性“url”不是一个函数。我开始认为这是因为您同时定义了urlRoot和url。主干网对RESTAPI设计非常固执己见,它将根据提供给集合的url属性自动构建模型url。在该过程中自动分配给模型的url属性很容易与模型的urlRoot属性冲突@布拉格拉迪斯拉夫酒店