主路由器在路由“”的末尾附加一个#"导致dom中引用锚点在Backbone/Require应用程序中不起作用
Main Router appends a # at the end of route "" cause in dom referencing anchors not work in Backbone/Require app
在Backbone.Router主路由器中,我在应用程序加载时有""
路由作为开始路由。它的方法决定是先创建并呈现登录视图还是主视图。当在没有路由的情况下访问localhost:8080/indexapp
时,它触发下面的第一个路由,即空的""
路由。登录并到达homeview后,地址栏中的url看起来像localhost:8080/indexapp#
。从这一点来看,引用文档中当前可用的一些dom元素的普通锚点href不会导致它们。如果我删除url末尾的hash并刷新页面,那么锚点就可以正常工作。
这是什么原因?解决这个问题的方法是什么?
主路由器:
define([
'jquery',
'ratchet',
'underscore',
'backbone',
'forms/formsdatamodel',
'login/loginview',
'register/registerview',
'home/homeview',
],
function($, Ratchet, _, Backbone, formsDataModelInst, LoginView, RegisterView, HomeView){
var MainRouter = Backbone.Router.extend({
routes: {
"": "render_home",
"login": "render_login",
"register": "render_register",
},
initialize: function(){
this.listenTo( formsDataModelInst, 'sync', this.render_home );
},
render_home: function(){
if( formsDataModelInst.get('loginp') == true ){ //show you app view for logged in users!
this.homeView = new HomeView();
this.homeView.render();
}
else if ( formsDataModelInst.get('loginp') == false ){ //not logged in!
Backbone.history.navigate("/login", {trigger:true});
}
},
render_login: function(){ //display your login view
this.loginView = new LoginView;
this.loginView.render();
},
render_register: function(){ //display your register view
this.registerView = new RegisterView;
this.registerView.render();
},
});
return MainRouter;
});
我的想法是避免地址栏中#
之后的空url,以克服无法工作的锚点。我不知道在没有#
的情况下,在打空路由时如何制作地址栏url。我已经修改了主路由器,以避免#
之后的空url通过:
将""
路由与方法gate
相关联,该方法导航到与决定渲染哪个的方法render_home_or_login
相关联的路由"/home"
。
修改后的路线:
routes: {
"": "gate",
"home": "render_home_or_login",
"login": "render_login",
"register": "render_register",
}
增加了门方法:
gate: function() {
Backbone.history.navigate("/home", {trigger:true});
},
通过这种方式,路线将在其裸露的情况下显示为类似localhost:8080/indexapp#home
。在地址栏中避免emty url已经解决了这个问题。
相关文章:
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 修改时,哪些DOM元素属性会导致浏览器执行回流操作
- 更改表结构会导致 React 失去对 DOM 的跟踪
- 语义 UI 模态导致我的元素在关闭后从 DOM 中消失
- 由于插件完成的 dom 突变而导致的未捕获不变冲突
- 为什么 DOM 读/写操作的微小重新排序会导致巨大的性能差异
- Javascript HTMLDOM appendChild 导致 DOM 异常 8
- getImageData 导致“未捕获错误:NOT_SUPPORTED_ERR:DOM 异常 9”
- 如何识别由于Chrome扩展程序而导致的DOM html代码更改
- 使用jquery在dom中移动嵌入的youtube iframe会导致全屏无法在Windows8 IE10中工作
- 主路由器在路由“”的末尾附加一个#"导致dom中引用锚点在Backbone/Require应用程序中不起作用
- 按'输入'在Google Chrome Omnibar中,会导致事件在DOM上启动
- Knockout.js"<!--ko if:-->"导致分离DOM元素的块
- 由于大量dom元素导致的性能问题
- 由事件侦听器附加到删除的dom元素所导致的内存泄漏
- 如何预测DOM按下键是否会导致字符输入
- jQuery 1.8中的DOM插入导致javascript触发两次
- JavaScript中的什么机制导致DOM或CSSStyleDeclaration的更改触发页面重绘?
- Javascript导致DOM元素被删除
- Bootstrap/Angular选项卡列表项是动态的,从API响应中设置——这会导致DOM问题