我有一个需要大量用户输入的项目。它基本上是一个有六个部分的拼图,这些部分是由标签路线触发的。够容易吧?我猜。
我现在有一个很棒的设置,当达到哈希值时(" www.website.com/index.html/#test"),第一件就会出现。现在,这很棒,但事实是,这些碎片可以随时以任何顺序触发。所以,如果我有以下路线 - " 1"," 2"," 3"等,它需要能够像:(&# 34; 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中有多个hashtag路由?
提前致谢。
-Mitchyl
答案 0 :(得分: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>