我已经创建了一个 Backbone 项目,所有的html的现在都转换成jsp页面。
如果我在URL中使用相应的页面jsp名称,则可以加载页面。
例如localhost:8080/abc/index.jsp || localhost:8080/abc/landing.jsp
但我面临的问题是,如果我有一个内部页面路由,例如像
考虑一个登录页面,其中有忘记密码链接,如果我点击它应该重定向到忘记密码页面,这是没有发生。
对于导航,我使用window.location.pathname = "/abc/landing.jsp"
我是这样手工做的,有没有一个正确的方法来实现与jsp页面导航。请帮助。
代码:忘记密码.jsp:
<input type="hidden" value="forgotPassword">
<div id="fp"></div>
根据输入的hidden参数,我决定哪一个新的需要被呈现。和url的形成是http://localhost.abc.com:8080/test/forgotpassword.jsp
下面是我的路由器逻辑:
define(['jquery', 'underscore', 'backbone'], function($, _, Backbone) {
var AppRouter = Backbone.Router.extend({
routes: {
'*': 'default'
},
});
var initialize = function() {
var apRouter = new AppRouter;
apRouter.on('route:default', function() {
if ($('input').val == "fp") {
require(['forgotpasswordView'], function(ForgotPswrd) {
var fpwrd = new ForgotPswrd();
fpwrd.render();
});
else {
require(['indexView'], function(IndexView) {
var iView = new IndexView();
iView.render();
});
}
}
});
Backbone.history.start();
};
return {
initialize: initialize
};
});
因此,如果我手动点击附加相应jsp名称的URL,如
http://localhost.abc.com:8080/test/forgotpassword.jsp or
http://localhost.abc.com:8080/test/index.jsp
然后页面加载和工作正常。但如果我调用另一个视图从一个视图到另一个视图,那么它是失败的。
比如登陆.html:
<button id="goTo"> Go to Next View </button>
登陆视图JS:
events : "click#goTo : goTo"
goTo : function(evt){
evt.preventDefault();
Backbone.history.navigate('/',true);
}
现在忘记密码页面需要加载,但网址没有改变,只是将哈希附加到以前的网址上。
请帮忙。
1条答案
按热度按时间u2nhd7ah1#
Backbone 网依赖路由器来实现导航。因此,如果您在 Backbone 网路由中定义了一个路由,您可以通过使用 Backbone 网路由对象直接调用该路由来导航到该路由。在您的情况下,您可以为忘记密码的链接创建一个路由,并在该路由的函数def中加载模板或视图。触发ROUTE 'ON CLICK'。例如:
请注意,您无法通过backbone js加载jsp页面,因为在呈现html之前需要传输jsp文件,这无法在客户端完成。因此,您可以选择使用模板化引擎(如handle js),并在必要时使用handle模板呈现视图。