Pregunta

Tengo una propiedad de controlador llamada authenticated que por defecto es false.Sin embargo, en mi vista de inicio de sesión, necesito poder configurarlo en true.Además, en mi vista de cierre de sesión, necesito poder configurarlo en false.¿Cómo puedo exponer esta propiedad dentro de la vista?

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';
    }
    ...
});
¿Fue útil?

Solución

Su controlador está realizando correctamente las funciones de inicio y cierre de sesión. Todo lo que necesita hacer es que su vista active los eventos backbone.js y que el controlador esté registrado para recibirlos.

En algún lugar de su controlador, necesita 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();

Además, debe asegurarse de que el controlador esté configurado para manejar eventos, por lo que se necesita algo como esto en su función de inicialización:

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

Su vista necesitará el código de evento, así que asegúrese de agregar la llamada _.extend (...) en su inicialización.

En su opinión, cuando corresponda, necesita:

this.trigger("login_view:login");

y

this.trigger("login_view:logout");

Como nota final, desea que el controlador realice las llamadas al servidor de inicio y cierre de sesión. Todo lo que necesita de la vista es un evento y, de lo contrario, potencialmente un modelo poblado o datos. Estos datos se pasarían como un parámetro en las declaraciones de activación y se recibirían como un argumento en las funciones de inicio / cierre de sesión. Sin embargo, no he incluido esto en el código.

Básicamente, desea que la vista administre el DOM y envíe eventos de aplicación al controlador. El controlador puede luego mediar con el servidor y administrar las vistas necesarias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top