【问题标题】:Multiple hashtag routes in backbone.js主干.js 中的多个主题标签路由
【发布时间】:2014-10-07 09:54:46
【问题描述】:

我有一个需要大量用户输入的项目。它基本上是一个由六块组成的谜题,这些块由标签路线触发。很容易,对吧?我猜。

我现在有一个很好的设置,当达到一个哈希值时(“www.website.com/index.html/#test”),第一块就会出现。现在,这很好,但问题是,这些片段可以在任何时间以任何顺序触发。因此,如果我有以下路线 - “1”、“2”、“3”等,它需要能够类似于:(“www.website.com/index.html/#3/#1/ #2") 或类似的东西。在我首先弄清楚如何让它发挥作用之后,我可以担心以后让它看起来不错。

这是我目前拥有的路线代码 -

<script>
    $(function(){

    var hideOne = function () {
        //alert("hideOne");
        var elem = document.getElementById("one");
        elem.className = "hide";
    };

    var Workspace = Backbone.Router.extend({
      routes: {
        "test":"test",// #test
      },    
      test: hideOne
    });

    var router = new Workspace();
    Backbone.history.start(); 

});
</script> 

所以我的问题是;我该如何做才能在backbone.js中拥有多个主题标签路由?

提前致谢。

-米切尔

【问题讨论】:

  • 这不是您想要构建多条路线的方式。也许像#1/2/3。 hashtag 分隔路径和查询字符串的结尾以及片段的开头。
  • @w1zeman1p 哦,好吧。你知道我会怎么去建立多条路线吗?感谢您的回复:)
  • 是的,所以在您的路线对象中,您可以添加另一个属性和另一个要调用的函数。可能类似于 routes: { "test/1", hideAnotherOne } 其中 hideAnotherOne 是一个不同的函数。我想如果你有更多的上下文我可以更具体:)
  • @w1zeman1p 抱歉回复晚了,希望你还在浏览这个问题!基本上,散列会触发将类应用于某些图像的不同函数。每个都将在不同的图像上触发该功能。所以,如果我想显示图像 1 和 3,它们需要同时具有 1 和 3 的哈希值。我希望这更具体一点 :)

标签: javascript backbone.js hash routes


【解决方案1】:

你可以做这样的事情。您在哪里浏览到 stuff.com/path#hide/one/three 这里带有 (/:x) 的路由是动态匹配器。所以 () 表示它是可选的, :x 表示它将把来自 url 片段的那部分的字符串值作为参数传递给路由匹配时调用的函数。因此,如果您的图像数量限制在非常小的范围内,我认为这应该没问题。

<script>
  $(function(){
    var hideMany = function () {
      var toHide = [].slice.call(arguments);
      toHide.forEach(function (id) {
        if(id === null) { return }
        var elem = document.getElementById(id);
        if(elem) {
          elem.className = "hide";
        }
      });
    };

    var Workspace = Backbone.Router.extend({
      routes: {
        "hide(/:a)(/:b)(/:c)" : "test"
      },
      test: hideMany
    });

    var router = new Workspace();
    Backbone.history.start();

  });
</script>

【讨论】:

  • 感谢您的回复!看起来很整洁,我想我会试一试。不过我有点困惑。这是否能够触发 specific 元素隐藏?我可以将 (/:a) 绑定到“image1”,将 (/:b) 绑定到“image2”等吗?
  • 是的,所以如果你想让它隐藏 image1,你可以输入 #hide/image1/image3 其中 image1 和 image3 是页面中元素的 ID。
  • 我真的很困惑(对不起,我没有很好地理解这个概念)。我是否需要将 (/:a) 和 (:/b) 更改为元素的 ID?或者它应该已经适用于当前设置。不过,感谢您提供帮助的 cmets,我想我开始明白了。编辑:没关系!我想通了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-27
  • 1970-01-01
相关资源
最近更新 更多