围绕一个独特的backbone.js集合
我正在开发我的第一个backbone.js应用程序,遇到了一些麻烦。也许有人能帮我克服这个障碍(我理解上的差距)。我想要/需要做的是将收集的数据返回到我的路由器,这样我就可以将其绑定到剑道UI网格,但我在我的收集中没有看到任何搜索结果。。。我想我一定错过了一些基本的东西,但我不确定是什么 以下是我到目前为止的情况:围绕一个独特的backbone.js集合,backbone.js,kendo-ui,backbone.js-collections,Backbone.js,Kendo Ui,Backbone.js Collections,我正在开发我的第一个backbone.js应用程序,遇到了一些麻烦。也许有人能帮我克服这个障碍(我理解上的差距)。我想要/需要做的是将收集的数据返回到我的路由器,这样我就可以将其绑定到剑道UI网格,但我在我的收集中没有看到任何搜索结果。。。我想我一定错过了一些基本的东西,但我不确定是什么 以下是我到目前为止的情况: ES.Router = Backbone.Router.extend({routes: { '': 'search', 'se
ES.Router = Backbone.Router.extend({routes: {
'': 'search',
'search': 'search',
'results': 'results'
},
results: function() {
var resultsData = new ES.Results();
var boo = resultsData.fetch({
data: JSON.stringify({"query":"myquery"}),
type: 'POST',
contentType: 'application/json'
});
console.log(boo);
}});
ES.Result = Backbone.Model.extend();
ES.Results = Backbone.Collection.extend({
model: ES.Result,
url: '/search/query'
});
这里有几个问题:
url
作为一个函数,以避免试图手动修改AJAX请求选项fetch
调用始终是异步的,因此您需要在选项哈希中添加一个success
回调,或者向集合的reset
事件添加一个侦听器ES.Results = Backbone.Collection.extend({
initialize: function() {
this.query = "test";
},
model: ES.Result,
url: function() {
return '/search/query?query=' + this.query;
}
});
然后在创建集合时设置搜索:
var resultsData = new ES.Results();
resultsData.query = "soccer";
并使用success
和/或on(“重置”)
事件来处理结果:
resultsData.on("reset", function(collection) {
console.log(collection);
});
console.log("Fetching....");
resultsData.fetch({
success: function(collection, response) {
console.log("Got data!" + collection.length);
},
error: function(collection, response) {
console.log("Error: " + response.responseText);
}
});
为什么不尝试按指定的方式放置
success
和error
回调,并尝试调试并查看它执行的回调。它会给你一个关于它的想法。如果它进入错误
回调,请确保您的服务器返回正确的响应,它应该是一个JSON模型数组
。boo
将是一个jqXHR
,记录resultData
将为您提供收集。感谢您的帮助。这是我丢失的一块。至于POST vs.GET,我不知道为什么不使用POST。有些POST数据(查询字符串)可能很长。@Charles我想可能不需要执行Get。这只是REST模型的标准,主干使用(默认情况下)Get=fetch、Post=save和Put=update。