Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

409
Visualizações
Ember: cómo pasar una propiedad del archivo de rutas a una plantilla de manillar con 401 devuelto

La situación es que tengo una pantalla de inicio de sesión que funciona excepto cuando hay un inicio de sesión fallido (401 no autorizado). Básicamente, es muy simple en este momento, el controlador (plantilla) está tratando de acceder a una propiedad de la ruta para determinar si la llamada al back-end (rieles) falló.

 {{#if loginFailed}} <div class="alert">Invalid username or password.</div> {{/if}}

El archivo de ruta se parece a esto, he omitido cualquier código confidencial o código de trabajo que no sea necesario:

 import Ember from 'ember'; import ajax from 'ic-ajax'; export default Ember.Route.extend({ loginFailed: false, isProcessing: false, beforeModel: function(){ //some stuff }, actions: { login: function() { this.setProperties({ loginFailed: false, isProcessing: true }); var _this = this; ajax({ url: //something, type: 'post', crossDomain: true, data: //some stuff, }).then( function(result) { //logging in logic all works }, function(error){ if (error.jqXHR.status === 401) { _this.set('isProcessing', false); _this.set("loginFailed", true); } } ); }, }, reset: function() { this.set('isProcessing', false); this.controller.set('password', ''); this.controller.set('username', ''); } });

He realizado algunas depuraciones y, de hecho, golpea el bloque de error para la promesa de ajax, sin embargo, parece fallar. Creo que falla porque es 401, los recursos limitados me han llevado a esta conclusión.

Puede ver que loginFailed es la propiedad que estoy tratando de cambiar y cuando ocurre el error 401, y en la plantilla, esta es la propiedad a la que estoy tratando de acceder.

Soy muy nuevo en Ember y solo trabajo en él desde hace poco más de una semana, por lo que cualquier ayuda sería increíble.

Aquí están las versiones que estoy usando cuando ejecuto ember -v en mi proyecto:

 version: 1.13.8 node: 0.12.7 npm: 2.13.4 os: win32 x64
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Debe establecer la propiedad en el controlador , no en la ruta.

 _this.set("controller.loginFailed", true);

Manifestación.

over 4 years ago · Santiago Trujillo Relatório

0

No puede utilizar las propiedades de una ruta en la plantilla correspondiente. Puede usar controladores para este propósito o puede usar model hook para pasar todos los parámetros.

Creo que una mejor alternativa podría ser hacer que las plantillas de sus rutas sean lo más ficticias posible para que solo pasen datos y controladores de acción necesarios a los componentes.

La mayoría de las plantillas de nuestras rutas contienen solo un componente y toda la lógica se encuentra en los componentes y sus componentes internos. Todos los controladores de eventos también se encuentran en los componentes a menos que necesiten llamadas al servidor. Por lo tanto, es mejor que mueva este código a su componente de inicio de sesión:

 {{#if loginFailed}} <div class="alert">Invalid username or password.</div> {{/if}}

Entonces la plantilla de su ruta será así:

 {{my-login-component loginPressed="login" loginData=model}}

Toda la otra lógica estará en el archivo js de su componente.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda