【发布时间】:2014-05-07 21:33:48
【问题描述】:
我目前正在为一个项目开发框架,该项目已拆分为 Web 客户端和服务器代码。 客户端代码使用了 require .js 和backbone.js 的组合。 我目前正在设置客户端/服务器通信,理想情况下,我们希望能够使用骨干网内置的 .sync 功能(以及由此构建的 fetch 调用)。
但是,我遇到了一系列奇怪的错误。
当代码执行时,我在控制台中收到以下错误。 “未捕获的错误:必须指定“url”属性或函数”
这些是我们 main.js 中的相关垫片
require.config({
paths: {
'jQueryBase': '../vendor/jquery-1.10.2/jquery-1.10.2',
'jQuery': '../vendor/jquery-ui-1.10.3/ui/jquery-ui',
'underscore': '../vendor/underscore/underscore',
'backbone': '../vendor/backbone/backbone',
'handlebars': '../vendor/handlebars/handlebars-v1.1.2 '
},
shim: {
'jQuery': {
exports: '$',
deps: ['jQueryBase']
},
'underscore': {
exports: '_'
},
'backbone': {
exports: 'Backbone',
deps: ['underscore', 'jQueryBase']
},
'handlebars': {
exports: 'Handlebars'
}
},
waitSeconds: 0
});
这是我们的 dogModel.js
define(['backbone'],
function (Backbone) var DogModel = Backbone.Model.extend({
});
return DogModel;
});
这是我们的 dogCollection.js
define {
('backbone',
'../models/dogModel'
J,
function (Backbone,
DogModel) {
var DogCollection = Backbone.Collection.extend({
model: DogModel,
url: '/dogs',
});
return DogCollection;
});
这是我们的 dogData.js
define(['../collections/dogCollection',
'../models/dogModel'
],
function (DogCollection,
DogModel) {
var dogDataModule = {};
dogDataModule.dogList = new DogCollection();
//this request works
$.ajax(
type: "GET",
dataType: "json",
url: "http://localhost:7001/SERVICES/dogs",
success: function (data) {
dogDataArray = data;
for (var i = 0; i < dogDataArray.length; i++) {
var dogData = dogDataArray[i];
var dogModel = new DogModel();
dogModel.set(dogData);
dogDataModule.dogList.add(dogModel);
}
}
});
//this request doesn't
dogDataModule.dogList.sync('read', DogCollection, {
success: function () {
alert("success ");
},
error: function () {
alert("failure ");
}
};
return dogDataModule;
});
我尝试将 URL 直接添加到同步请求的选项中,如下所示:
dogDataModule.dogList.sync('read', DogCollection, {
url: 'http://localhost:7001/SERVICES/dogs',
success: function () {
alert("success");
},
error: function () {
alert("failure "
};
});
但这所做的只是将错误更改为“Uncaught TypeError : Object function (){ return parent.apply(this, arguments); } 没有方法“触发器”。
我还尝试在集合的 url 属性前添加“SERVICES/”和“../SERVICES/”,或者提供完整且明确的 URL 属性(直到并包括 http://),但是这些都没有奏效。
谁能帮我弄清楚为什么我会看到这个错误?
【问题讨论】:
标签: javascript backbone.js requirejs backbone.js-collections