backbone.js - controlador de propriedades de um modo de exibição
-
27-10-2019 - |
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';
}
...
});
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.