如何防止在主干网中路由.js
How to prevent routing in Backbone.js?
当我从第一页单击"取消"时 - 没关系。但是"取消"在我移至"第二页"。在这种情况下,路由器将应用程序重定向到"路由。我需要防止这种重定向。
"取消" - 隐藏链接,"第二页" - 移至第二页
<script type="text/html" id="template">
<a href="#" class="cancel">Cancel</a>
<a href="#second">Second page</a>
</script>
<div id="container"></div>
<script>
var View = Backbone.View.extend({
template: $('#template').html(),
events: {
"click .cancel": "cancel"
},
cancel: function () {
this.$el.hide();
},
render: function () {
this.$el.html(this.template);
return this;
}
});
var AppRouter = Backbone.Router.extend({
routes: {
"": "first",
"second": "second"
},
创建视图并替换容器的 html
links: function () {
var view = new View;
$('#container').html(view.render().el);
},
second: function () {
this.links();
$('#container').prepend("<h1>Second page</h1>");
},
first: function () {
this.links();
$('#container').prepend("<h1>First page</h1>");
}
});
$(document).ready(function () {
app = new AppRouter;
Backbone.history.start();
});
</script>
我认为您应该从取消处理程序返回 false 以防止导航到#
:
cancel: function (e) {
this.$el.hide();
return false;
},
http://api.jquery.com/on/说:
从事件处理程序返回 false 将自动调用 event.stopPropagation() 和 event.preventDefault()。
您还可以以可重用的方式解决阻塞哈希问题,如以下答案:
如果内容未保存,则阻止导航到其他视图
此解决方案可防止 Backbone 路由器回调触发,尽管它只能在哈希更改后运行,但此函数将以前的哈希片段设置回来,因此不会被注意到
另外,对于此执行问题,您可以简单地从
<a href="#">...</a>
自
<a>...</a>
它将充当普通的HTML锚标记(例如光标设置为pointer
),但不会导航到任何地方
相关文章:
- 使用Ampersand.js路由模块化应用程序
- 在node-js路由中发出http请求
- 更改路由后,运行一次js脚本
- Angular JS-如何强制浏览器记录历史以便快速路由
- 从Sencha Touch迁移到EXT JS 6-Contoller的默认/空路由
- 尝试使用Node.js动态路由从IMDB中抓取电影内容.但是在我的output.json文件中没有定义
- ember.js:转换到相同的路由会产生堆栈溢出问题
- Angular JS和Node路由/布线-仅在页面刷新后显示数据
- express js中具有不同功能的动态路由
- Sails.js在v1、v2等中分组路由
- 如何将Sails.js挂钩路由连接到策略
- 不更改路由位置backline.js的触发器方法
- angular js路由不起作用
- Hapi-js重定向到另一个带有额外请求数据的路由
- 如何防止在主干网中路由.js
- 骨干网中的高级路由.js具有功能分组
- 我如何使用外部路由.js,这样我就不必在app.js中定义我的路由了
- 带页面的聚合物路由.js在新选项卡中打开链接时,不要向 URL 添加哈希标记
- Heroku错误:页面是通过HTTPS加载的,但请求了一个不安全的脚本“角度路由.js”
- ngRoute 依赖注入错误,但加载了角度路由.js.min