Pergunta

Eu tenho um controlador de propriedade chamada authenticated qual o padrão false.No entanto, na minha visão login eu preciso ser capaz de defini-lo para true.Além disso, na minha logout ver eu preciso ser capaz de defini-lo para false.Como posso expor esta propriedade dentro da visão?

var Controller = Backbone.Controller.extend({
    ...
    authenticated: false,

    login: function() {
        if(this.authenticated)
        {
            location.hash = '!/dashboard';
        } else {
            new LoginView();
        }
    },

    logout: function() {
        $.post('/admin/logout', {},
        function(resp){
        }, "json");

        this.authenticated = false;
        location.hash = '!/login';
    }
    ...
});
Foi útil?

Solução

O controlador está corretamente fazendo o login e logout funcionalidade.Tudo que você precisa fazer é ter seu modo de exibição fogo backbone.js eventos e tem o controlador de estar registado para receber essas.

Em algum lugar em seu controlador, você precisa de algo como:

var loginView = new LoginView(...);  // params as needed
loginView.bind("login_view:login", this.login);
loginView.bind("login_view:logout", this.logout);
loginView.render();

Além disso, você precisa assegurar-se de que o controlador é configurado para manipular os eventos, portanto, algo como este é necessário em sua função de inicialização:

_.extend(this, Backbone.Events);
_.bindAll(this, "login", "logout");

Sua visão será necessário o código de evento, por isso certifique-se de adicionar o _.estender(...) a chamada para a sua inicialização.

Na sua opinião, onde apropriado, você precisa de:

this.trigger("login_view:login");

e

this.trigger("login_view:logout");

Como nota final, você quer que o controlador faça o login e logout do servidor de chamadas.Tudo o que você precisa a partir da vista é um evento e, potencialmente, um povoado do modelo de dados ou de outra forma.Esta informação seria transmitida como um parâmetro no trigger(s) e seria recebido como argumento de login/logout funções.Eu não incluídos no código, no entanto.

Basicamente, você quer que a vista para gerir o DOM e bolhas de eventos da aplicação para o controlador.O controlador então pode intermediar o contato com o servidor e gerenciar qualquer necessárias pontos de vista.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top