我正在尝试设置我正在jsfiddle上制作的应用程序的演示,以便获得问题的帮助。它需要进行ajax调用。 jsFiddle有一个echo api(例如http://jsfiddle.net/zalun/yVbYQ/)来模拟ajax调用,但是我无法弄清楚如何将它集成到骨干模型或集合中,如下所示。这是骨干模型的小提琴...... http://jsfiddle.net/mjmitche/RRXnK/117/如果有帮助的话。
var Game = Backbone.Model.extend({
initialize: function () {
},
getStuff: function () {
var _this = this;
$.ajax({
url: "http://search.twitter.com/search.json?q=from:realDonaldTrump",
type: "GET",
success: function (response) {
alert(response.results[0]);
alert("success");
_this.trigger("gameStartedEvent", response);
},
error: function (r) {
alert("error");
alert(r);
}
});
}
});
var game = new Game();
game.getStuff();
jsfiddle mock ajax call
的一个例子new Request.JSONP({
url: 'http://jsfiddle.net/echo/jsonp/',
data: {
tweet1: 'some text',
tweet2: 'another text'
tweet3: 'blah blah'
},
onSuccess: function(response) {
show_response(response, $('post'));
}
}).send();
show_response = function(obj, result) {
$H(obj).each(function(v, k) {
new Element('li', {
text: k + ': ' + v
}).inject(result);
});
result.highlight();
};
答案 0 :(得分:0)
JSFiddle echo API不支持实现Backbone CRUD所需的HTTP操作范围。使用POST /echo
,您可以模拟创建新模型,但这就是它。
相反,请考虑使用autoRespond
选项的sinon.js fakeServer
来模拟客户端上的服务。这将需要更多的工作,但会提供更“真实”的模拟。
FWIW,对于正常的CRUD用例,我建议Backbone.localStorage。它是Backbone.sync
的替代品,因此只需将其作为资源包含在内,将集合的url
属性更改为localStorage
,即可开展业务。但是,这对你不起作用,因为你手动制作AJAX请求,所以你需要降低。