我正在使用browserify测试水Marionette。我接替了这一点:
// Here is the singup function in LoginView which extends from Marionette.Layout.View
signin: function (e) {
e.preventDefault();
var email = $('#input-email').val();
var password = $('#input-password').val();
var userAuth = new UserAuthenticateModel({
email: email,
password: password
});
if(userAuth.isValid()) {
// signin
userAuth.save(null, {
success: function (model, resp, options) {
if(resp.code === 200) {
alert('login is good');
// I need to redirect to 'localhost:3333/app' route
// how should I do it? given appRouter, event/trigger is not available.
window.location.href = 'http://www.yahoo.com'; // It looks not a good solution
return;
}
if(resp.code === 406) {
// password doesn't match
alert('code 406');
}
},
error: function () {
alert('login http request is not successful');
}
});
} else {
// show error message
}
}
我的问题是,当登录成功时,我应该如何重定向到另一条路线?鉴于我使用Browserify加载模块,全局范围内没有myAppRouter对象可用。 我想有2个选项,但我不知道如何实现它们。
1)调用myAppRouter(从Backbone.Marionette.AppRouter扩展),但它在视图模块中不可用,我该怎么办?需要它和新的吗?然后它将处于循环依赖。
2)使用某种事件/触发器向myAppRouter发送路由更改消息,但我仍然不知道该怎么做。
3)在使用登录成功时处理视图功能中的路由更改的其他最佳实践,我也不知道。我正在使用browserify,请同时考虑这一点。
有人可以通过提供一些简洁描述和示例代码来帮助我吗?我不喜欢咖啡脚本,因为我还不能理解它。
谢谢!
答案 0 :(得分:0)
看起来这与我刚回答的其他问题非常接近:)。我对browserify并不是很熟悉,但是你可以看看我的解决方案,看看是否适合你,只要听取从视图/控制器触发的App.vent消息?如果没有让我知道,我可以再挖掘一下浏览器,看看我是否能找到更好的解决方案。