Javascript 如何将Backbonejs路由器与Twitter引导选项卡相结合?
我有一些jQuery代码与bootstrap相结合,我想在其中更改一些东西,以便可以使用Backbone.js。我已经走了很长一段路,但是现在我在使用标签时遇到了一些问题。我基本上用过。我设法显示了选项卡的内容,但选项卡本身看起来并不是活动的,这让用户对实际打开的选项卡一无所知)。所以我要做的是让标签看起来很活跃 选项卡本身的定义如下:Javascript 如何将Backbonejs路由器与Twitter引导选项卡相结合?,javascript,jquery,twitter-bootstrap,backbone.js,tabs,Javascript,Jquery,Twitter Bootstrap,Backbone.js,Tabs,我有一些jQuery代码与bootstrap相结合,我想在其中更改一些东西,以便可以使用Backbone.js。我已经走了很长一段路,但是现在我在使用标签时遇到了一些问题。我基本上用过。我设法显示了选项卡的内容,但选项卡本身看起来并不是活动的,这让用户对实际打开的选项卡一无所知)。所以我要做的是让标签看起来很活跃 选项卡本身的定义如下: <a id="tab1" href="#/ticket/1">1 Blah Blah</a> var Router = Backbon
<a id="tab1" href="#/ticket/1">1 Blah Blah</a>
var Router = Backbone.Router.extend({
routes: {
"": "home",
"ticket/:ticketId": "ticket"
}
});
var router = new Router();
router.on("route:ticket", function(ticketId) {
tabContentView.render({ticketId: ticketId}); // This works
$(this).tab('show'); // This does not work
});
Backbone.history.start();
不幸的是,我使用Backbone.js更改了选项卡的路由,然后尝试如下显示选项卡的内容:
<a id="tab1" href="#/ticket/1">1 Blah Blah</a>
var Router = Backbone.Router.extend({
routes: {
"": "home",
"ticket/:ticketId": "ticket"
}
});
var router = new Router();
router.on("route:ticket", function(ticketId) {
tabContentView.render({ticketId: ticketId}); // This works
$(this).tab('show'); // This does not work
});
Backbone.history.start();
我想问题在于,这个
在这里并没有指向选项卡本身。所以我试着用:
$("#tab"+ticketId).tab('show');
但不幸的是,这也不起作用
有人知道我怎么解决这个问题吗?欢迎所有提示
[编辑]
是否无法从路由器获取url上的单击事件,以便我可以使用
.tab(“显示”)代码>?没有“在路由器中获取点击事件”的方法,但您始终可以决定自己在所需选项卡上触发点击事件
router.on("route:ticket", function(ticketId) {
tabContentView.render({ticketId: ticketId});
$("#tab" + ticketId).trigger('click');
}
因为$(this)不是此上下文中的节点。IMHO您应该在视图中封装引导交互,并在视图渲染时运行它。render:function(){//make html;this.$el.tab('show')}@Evgeniy-谢谢你的想法,但我有点听不懂你说的。你们可以举个例子吗?签出这个提琴-你们可以从路由器传递id来选择必要的标签并呈现一个视图