I’m working out my first backbone.js app and have run into a bit of a wall. Perhaps someone can help me past this hurdle (gap in my understanding). What I want/need to do is to return the collection data to my router, so I can bind it to a Kendo UI Grid, but I’m not seeing any of the search results in my collection… I figure I must be missing something fundamental, but I’m not sure what it is.
Here is what I have so far:
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'
});
There are a few issues here:
urlas a function, so as to avoid trying to modify the AJAX request options manually.fetchcall will always be asynchronous, so you need to either add asuccesscallback in the options hash, or add a listener to the collection’sreseteventI’d write the collection like this:
Then set the search when you create the collection:
And use
successand/or theon("reset")event to handle the result: