我想要的是在我的 Marionette.ItemView事件中处理锚按钮。我不想在锚标记中使用href 。我想处理项目视图中的点击,并要求主干approuter 更改页面。
我想在单击锚点按钮时将页面从索引切换到 myaccount 。我的模板如下所示
<div>
<a data-role="button" id="btn_eclipse" class="btn_eclipse_myaccount"><%= val_btn_myaccount %></a>
<a data-role="button" id="btn_eclipse" class="btn_eclipse_services"><%= val_btn_services %></a>
<a data-role="button" id="btn_eclipse" class="btn_eclipse_offers"><%= val_btn_offers %></a>
</div>
我的Marionette.ItemView捕获这样的事件
events : {
'click input[type="button"]' : 'onButtonClick',
'blur input[type="text"]' : 'onKeyPress',
'click a' : 'onAnchorButtonClick',
},
onAnchorButtonClick : function(obj){
obj.preventDefault;
var btn_id = $(obj.target).attr('id');
console.log("The button clicked id is==="+$(obj.target).attr('id'));
//here i trigger event to change page
}
我无法检索您在锚标记的答案中指定的ID或任何其他属性,例如 href 。
请告知我该怎么做。
提前致谢。
答案 0 :(得分:4)
你可以用这样的东西做你想做的事:
var MyView = Backbone.Marionette.ItemView.extend({
events : {
"click a" : "handleRouting"
},
handleRouting : function (e) {
e.preventDefault();
Backbone.history.navigate(/*whatever your route is*/, true);
}
});
虽然以上方法有效,但我建议做的是做你不想做的事情,即使用href
标签上的a
并拥有一个挂钩的全局监听器路由。
根据您的评论问题,您可以使用以下内容实现全局侦听器:
$(document).on("click", "a", function (e) {
var href = $(this).attr("href");
if (href && href.match(/^\/.*/) && $(this).attr("target") !== "_blank") {
e.preventDefault();
Backbone.history.navigate(href, true);
}
});
如果您使用的是HTML推送API(而不是#!s),那么上述内容将会捕获通过Backbone.Router
路由它们的链接点击次数。
答案 1 :(得分:0)
我已使用behavior
属性
v-href
来处理此问题
https://github.com/samccone/marionette-behaviors#viewlinks
我在我的所有应用程序中广泛使用它,它就像一个魅力!