javascript - 用于二维菜单的 Backbone 路由器:建议
我在 backbone.js 中是初学者。
我的页面导航看起来是这样的:
左侧导航定义了四种视图类型,而顶部导航应更新数据模型并重新渲染当前视图(这是我的想法)。
我希望允许用户根据个人偏好收藏当前视图和类别(并可能将设置存储在浏览器的本地存储中)。
这两个菜单可以互换使用,这意味着用户可以决定在当前类别的模型下显示不同的视图,也可以在当前视图中选择不同的类别。
我在弄清楚如何以稳定的方式配置我的路由器时遇到了一些麻烦。
请注意,这个路径后面可能还有其他参数,例如根据 profile_id 在地图上显示一个活动标记。
现在,我有了做类似这样的事情的想法:
var AppRouter = Backbone.Router.extend({
routes: {
":view/:category": "aggregatefunction"
}
});
但我不太确定这是否会带我到我需要的东西。
由于我想交替使用这些菜单并使它们可书签化,我在创建链接时已经遇到困难。
你能给我一些关于结构的建议,并提醒我可能遇到的问题以帮助我吗?
任何补充建议当然也欢迎。
谢谢
编辑
关于奖金部分,我希望能看到更多的意见。
我在动态构建和调整菜单锚标签中的 href 时仍然遇到一些问题,同时又希望能够触发相关事件(切换类别或切换视图)。我正在寻找该问题的最稳定解决方案。
如果可能的话,希望能附上一些示例代码来说明。
谢谢。
答案#1
嗯,我认为一种看待这个问题的方式是,最重要的部分是视图,而类别实际上不那么重要,它们可以被视为一种过滤器。甚至可能有意义的是有视图而没有类别(以查看“全部”),但在这里我只是在猜测你的应用可能在做什么……
我之所以这么说,是因为我假设你会有四个 Backbone 视图(地图、直播、RSS 等),但没有针对这些类别的特定视图。所以在切换类别时,你实际上并没有切换视图,只是用不同的参数重新渲染,对吗?
那么对我来说,路由器应该是这样的:
'map/:category': '_map'
'rss/:category': '_rss'
...
每个主视图一条路径,并将类别作为回调参数。然后人们可以收藏一个 URL,例如 #map/events 或 #rss/places_to_eat,但在内部,你正在管理 4 个干净的视图。
之后,使用 splats 会更容易,以允许视图同时显示多个类别(splats 在路由定义中以 * 开头)。
仅是我的一点看法!
答案#2
我一直觉得 Backbone 的路由器特别糟糕,正是因为这个原因:它是单向的。我写了一个 jQuery 插件,可以提供依赖变量和独立变量。可以在 http://plugins.jquery.com/uriAnchor/ 查看。使用这个插件,像你描述的那样构建一个带有模型和视图的可书签应用非常简单,尽管我不会浪费时间在 Backbone 上。如果你想了解更多,请告诉我。无论如何,希望这能帮到你。
