在牵线木偶视图中,当登录成功时,重定向到另一个路径,给定appRouter在视图功能中不可用

时间:2014-09-20 10:03:17

标签: backbone.js marionette

我正在使用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,请同时考虑这一点。

有人可以通过提供一些简洁描述和示例代码来帮助我吗?我不喜欢咖啡脚本,因为我还不能理解它。

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来这与我刚回答的其他问题非常接近:)。我对browserify并不是很熟悉,但是你可以看看我的解决方案,看看是否适合你,只要听取从视图/控制器触发的App.vent消息?如果没有让我知道,我可以再挖掘一下浏览器,看看我是否能找到更好的解决方案。