Aurelia - Diálogo
Aurelia oferece uma maneira de implementar a janela de diálogo (modal). Neste capítulo, mostraremos como usá-lo.
Etapa 1 - Instalar um plugin de diálogo
O plugin de diálogo pode ser instalado a partir do command prompt janela.
C:\Users\username\Desktop\aureliaApp>jspm install aurelia-dialog
Para que este plugin funcione, precisamos usar bootstrap manual. Abordamos isso no capítulo Configuração. Dentromain.js arquivo, precisamos adicionar o aurelia-dialog plugar.
main.js
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.plugin('aurelia-dialog');
aurelia.start().then(() => aurelia.setRoot());
}
Etapa 2 - Criar pastas e arquivos
Primeiro, faremos um novo diretório chamado modal. Vamos colocá-lo dentro docomponentspasta. Abra ocommand prompt e execute o seguinte código.
C:\Users\username\Desktop\aureliaApp\src\components>mkdir modal
Nesta pasta, iremos criar dois novos arquivos. Esses arquivos irão representarview e view-model para o nosso modal.
C:\Users\username\Desktop\aureliaApp\src\components\modal>touch my-modal.html
C:\Users\username\Desktop\aureliaApp\src\components\modal>touch my-modal.js
Etapa 3 - Criar um modal
Primeiro, vamos adicionar view-modelcódigo. Precisamos importar e injetardialog-controller. Este controlador é usado para lidar com funcionalidades específicas do modal. No exemplo a seguir, estamos usando para centralizar um modal horizontalmente.
my-modal.js
import {inject} from 'aurelia-framework';
import {DialogController} from 'aurelia-dialog';
@inject(DialogController)
export class Prompt {
constructor(controller) {
this.controller = controller;
this.answer = null;
controller.settings.centerHorizontalOnly = true;
}
activate(message) {
this.message = message;
}
}
o viewo código ficará assim. Os botões quando clicados irão abrir ou fechar o modal.
my-modal.html
<template>
<ai-dialog>
<ai-dialog-body>
<h2>${message}</h2>
</ai-dialog-body>
<ai-dialog-footer>
<button click.trigger = "controller.cancel()">Cancel</button>
<button click.trigger = "controller.ok(message)">Ok</button>
</ai-dialog-footer>
</ai-dialog>
</template>
Etapa 4 - Acione um modal
A última etapa é uma função para acionar nosso modal. Precisamos importar e injetarDialogService. Este serviço tem métodoopen, onde podemos passar view-model de my-modal arquivo e model, para que possamos vincular os dados dinamicamente.
app.js
import {DialogService} from 'aurelia-dialog';
import {inject} from 'aurelia-framework';
import {Prompt} from './components/modal/my-modal';
@inject(DialogService)
export class App {
constructor(dialogService) {
this.dialogService = dialogService;
}
openModal() {
this.dialogService.open( {viewModel: Prompt, model: 'Are you sure?' }).then(response => {
console.log(response);
if (!response.wasCancelled) {
console.log('OK');
} else {
console.log('cancelled');
}
console.log(response.output);
});
}
};
Por fim, criaremos um botão para que possamos chamar openModal função.
app.html
<template>
<button click.trigger = "openModal()">OPEN MODAL</button>
<template>
Se executarmos o aplicativo, podemos clicar no OPEN MODAL botão para acionar uma nova janela modal.