Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按查询字符串值显示主干渲染视图_Javascript_Backbone.js_Underscore.js - Fatal编程技术网

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
中包含未添加到顶部的视图,代码将略有不同