Próbowałem dynamicznie zmieniać adres URL w routerze, ale nie mogłem tego zrobić, a on powraca do podstawowego adresu URL kolekcji. Tutaj napisałem kod z 3 różnymi kolekcjami, które oprócz wskazania trzech różnych adresów URL, robią dokładnie to samo. Mam tylko jeden model
i trzy collections
, które zależą od tego modelu, a nawet renderowania tego samego widoku. Jak mogę dynamicznie zmieniać url
, więc mogę utworzyć tylko jeden Collection
i jeden Model
? Czy to najlepszy sposób na taki przypadek?Dynamicznie zmieniający się adres URL w sieci szkieletowej
// MODELS & COLLECTIONS
window.Post = Backbone.Model.extend({
urlRoot: function() {
return 'http://localhost:5000/json/guides/:id'
}
})
App.Collections.RecentPosts = Backbone.Collection.extend({
model: Post,
url:'http://localhost:5000/json/posts/recent',
})
App.Collections.PopularPosts = Backbone.Collection.extend({
model: Post,
url:'http://localhost:5000/json/posts/popular',
})
App.Collections.FeaturedPosts = Backbone.Collection.extend({
model: Post,
url:'http://localhost:5000/json/posts/featured',
})
// CONTROLLER
App.Controllers.Documents = Backbone.Router.extend({
routes:{
"recent" : "recent",
"popular" : "popular",
"featured" : "featured",
},
recent: function(){
//.... same as featured ?
},
popular: function(){
//.... same as featured ?
},
featured: function(){
$("#browser").empty();
var collection = new App.Collections.Posts();
collection.fetch({
success: function(col,posts){
new App.Views.GuideView({collection: posts});
},
error: function(error){
console.log(error)
}
})
}
});
Dzięki! Działa świetnie. To było moje początkowe podejście, ale nie zainicjowałem 'Routera 'i również zrobiłem to źle:' fetch ({url: config.url}, success: .... '. Mam również w' Router 'a 'Home' * funkcja * że' this.navigate ("popularna") 's. To nie działa ... dlaczego tak jest? – Maroshii
Myślę, że ponieważ" nawigacja "jest domyślnie wywoływana w trybie cichym. Spróbuj tego' this.navigate ("popularne", {trigger: true}); ' – Stephen
Jeszcze raz dziękuję .... Bohater dnia! – Maroshii