Javascript 按查询字符串值显示主干渲染视图
我有动态链接,希望通过这些链接的查询字符串呈现视图 链接格式如下所示:Javascript 按查询字符串值显示主干渲染视图,javascript,backbone.js,underscore.js,Javascript,Backbone.js,Underscore.js,我有动态链接,希望通过这些链接的查询字符串呈现视图 链接格式如下所示: mysite.com/#content/id/subid/queryString=test1 //test1 is dynamic, it can be test1,test2 or the other value 我可以通过主视图中的this.options.queryString获取查询字符串 主视图: define(["jquery" , "underscore" , "backbone" ,
mysite.com/#content/id/subid/queryString=test1 //test1 is dynamic, it can be test1,test2 or the other value
我可以通过主视图中的this.options.queryString
获取查询字符串
主视图:
define(["jquery" ,
"underscore" ,
"backbone" ,
"text!templates/Content/mainTemplate.html",
"views/test1",
"views/test2"
],function($ , _ , Backbone, MainTemplate, test1, test2){
var mainView = Backbone.View.extend({
initialize : function(option){
},
event : {
},
render : function(){
var _content= _.template(MainTemplate);
this.$el.append(_content);
var view = this.option.queryString;
var renderView = new view();
$("#subDiv").html(renderView.render().$el);
}
});
return mainView;
});
我试图做的是:当queryString=test1时,我将呈现一个视图名test1
有什么可能的方法可以做到这一点吗?试着按照这些思路做一些事情(前提是你有一个真正的查询字符串,前面有
?
,就像我评论的那样)。注意,这只是伪代码
define([
'jquery',
'underscore',
'backbone',
'text!templates/Content/mainTemplate.html',
'views/test1',
'views/test2'
], function($, _, Backbone, MainTemplate, test1, test2) {
'use strict';
var MainView = Backbone.View.extend({
getParameterByName: function(name) {
var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
},
render: function(){
var _content= _.template(MainTemplate);
this.$el.append(_content);
var SubView = require('views/' + this.getParameterByName('queryString'));
var subView = new SubView();
this.$el('.sub-div').html(subView.render().$el);
}
});
return MainView;
});
这不是querystring,querystring应该在前面加上
?
,例如mysite.com/#content/id/subid/?querystring=test1
我收到此错误未捕获错误:尚未为上下文加载模块名“”。使用require([])
检查我的更新答案(require(views/')+…
)。此外,此操作的结果。getParameterByName('queryString')
应为“test1”或“test2”,否则它将不起作用-在define
中包含未添加到顶部的视图,代码将略有不同