Backbone.js BackboneJS-无法动态更新集合URL
我正在尝试为我的应用程序生成模拟数据。根据要求,我的用户可以设置Backbone.js BackboneJS-无法动态更新集合URL,backbone.js,backbone.js-collections,Backbone.js,Backbone.js Collections,我正在尝试为我的应用程序生成模拟数据。根据要求,我的用户可以设置json的大小。为此,我将用户带到新页面,并从用户那里获得一个值。说小的,中的,大的。一旦用户定义了大小,我将更新我收藏的url链接,如下所示: var api = "movies"; //default. later setting by dynamic var getURL = function( size ){ console.log('api is', api); return
json
的大小。为此,我将用户带到新页面,并从用户那里获得一个值。说小的
,中的
,大的
。一旦用户定义了大小,我将更新我收藏的url
链接,如下所示:
var api = "movies"; //default. later setting by dynamic
var getURL = function( size ){
console.log('api is', api);
return api;
}
var Theater = {
Models: {},
Collections: {},
Views: {},
Templates:{}
}
Theater.Models.Movie = Backbone.Model.extend({});
Theater.Collections.Movies = Backbone.Collection.extend({
model: Theater.Models.Movie,
urlRoot : getURL(),
url : function(){
console.log( "json from", "scripts/data/" + this.urlRoot+".json" );
return "scripts/data/" + this.urlRoot+".json"; //dynamic
},
initialize: function(){
console.log("Movies initialize");
}
});
以下是视图部分:
Theater.Templates.simulator = _.template($("#tmplt-simulator").html());
Theater.Views.Simulator = Backbone.View.extend({
el: $("#mainContainer"),
events :{
"click .radioBtn" : "setDataSize"
},
template : Theater.Templates.simulator,
initialize: function () {
_.bindAll(this, 'render');
this.render();
},
render: function () {
this.$el.empty();
return $(this.el).append(this.template()) ;
},
setDataSize : function(e){
e.preventDefault();
var size = e.target.value;
api = size; //updating the URL but not working when go back to home
}
})
除上述详细信息外,以下是完整代码:
有人帮我处理这个问题吗
提前感谢。集合实际上没有由主干处理的内置
urlRoot
属性。因此,您要定义的是一个自定义属性,它在创建集合构造函数时只计算一次
你应该做的是:
url: function(){
return "scripts/data/" + getURL() + ".json";
// ------------------------^ something that is actually dynamic
},
集合实际上没有由主干处理的内置
urlRoot
属性。因此,您要定义的是一个自定义属性,它在创建集合构造函数时只计算一次
你应该做的是:
url: function(){
return "scripts/data/" + getURL() + ".json";
// ------------------------^ something that is actually dynamic
},
是的,我有。但是,当我在不同视图之间切换时,默认URL会返回。除非我有意更新,否则如何阻止URL?@3gwebtrain我真的不明白你的问题。你说的是集合url还是浏览器url?我说的是集合url。在我设置了新的动态URL之后,当我返回主页时,它会重置。但我需要永久设置为再次更改。@3gwebtrain您可以更新JSFIDLE来演示此问题吗?我们如何在共享提琴中重现这一点?我将为您尝试。但这在共享小提琴中并不容易。是的,我知道了。但是,当我在不同视图之间切换时,默认URL会返回。除非我有意更新,否则如何阻止URL?@3gwebtrain我真的不明白你的问题。你说的是集合url还是浏览器url?我说的是集合url。在我设置了新的动态URL之后,当我返回主页时,它会重置。但我需要永久设置为再次更改。@3gwebtrain您可以更新JSFIDLE来演示此问题吗?我们如何在共享提琴中重现这一点?我将为您尝试。但这在共享小提琴中并不容易做到。