简体   繁体   English

骨干视图事件重定向

[英]Backbone view event redirect

I want to move to another page when the event is triggered in a View of Backbone. 在主干视图中触发事件时,我想移到另一个页面。

events: {
    'click .btn': 'signin'
},
render: function() {
    tmp = this.template();
    this.$el.html(tmp);
},
signin: function() {
    var logi = document.forms['signin']['name'].value;
    var mail = document.forms['signin']['email'].value;
    var passwd = document.forms['signin']['pass'].value;
    var hash = CryptoJS.SHA256(passwd).toString(CryptoJS.enc.Hex);
    var tkn = Math.random(9) * 123123123;
    _this.navigate('#', true);
    var user = new User({
        'login': logi,
        'email': mail,
        'pass': hash,
        'token': tkn.toString(),
        'recovery': null,
        'img': 'default.png'
    });
    //var user = new User({ 'user': logi, 'pass': hash });
    user.save({
        success: function(res) {
            alert(res.res);
        },
        error: function(res) {
            alert(res.res);
        },
        wait: true
    });

In my testing, this does not work. 在我的测试中,这不起作用。 Can anyone help me understand why? 谁能帮我理解原因?

The important code is _this.navigate('#', true) . 重要的代码是_this.navigate('#', true)

In order to modify the url you can do 为了修改网址,您可以

router.navigate('url');

If you also wish to call the router's method for this url, you have to set the option trigger to true : 如果您还希望为此URL调用路由器的方法,则必须将选项trigger设置为true:

router.navigate("url", {trigger: true});

Anyway, you should call router.navigate at the end of your fonction, so your user get actually created. 无论如何,您应该在功能结束时调用router.navigate,这样才能真正创建用户。

Your view should then be updated by your router method for this url. 然后,应该通过路由器方法对此网址更新您的视图。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM