2016-02-06 15 views
12

così ho la mia classe auth iniettato nella mia main.js:condizionale visualizzazione Elemento utilizzando Aurelia

import {Auth} from 'auth'; 
import {inject} from 'aurelia-framework'; 

@inject(Auth) 
export class App { 
    constructor(auth) { 
     this.auth = auth; 
    } 

    get isLoggedIn() { return this.auth.isLoggedIn; } 
} 

così nel mio app.html

<form> 
    <!-- form login elements --> 
</form> 

come faccio a fare questo elemento condizionalmente visualizzare in base alla mia app getter funzione.

+2

E il binding if/show? '

' http://aurelia.io/docs.html#/aurelia/framework/1.0.0-beta.1.1.1/doc/article/cheat-sheet/6 – nemesv

+0

Non sono riuscito a trovarlo, avrò un occhiata, esultante –

risposta

24

È possibile utilizzare if.bind per collegare in modo condizionale i propri elementi DOM.

<form> 
     <div if.bind="auth.isLoggedIn"> 
     <!--this DOM element will be bind only if auth.isLoggedIn is true--> 
     </div> 
</form> 

Opzionalmente, è anche possibile utilizzare show.bind ma questo nasconde solo gli elementi DOM. Dove come if.bind non lo renderà sulla tua pagina.

+1

dove è il 'se' vincolante nei documenti? non riesco a trovarlo da nessuna parte! argh – wal

+0

È nascosto nel foglio dei trucchi: http://aurelia.io/hub.html#/doc/article/aurelia/framework/latest/cheat-sheet/5 –

0

così ho creato un convertitore di valori:

export class CssdisplayValueConverter { 
    toView(value) { 
     return value ? 'none' : 'display'; 
    } 
} 

Poi nel mio app.html:

<require from='css-display'></require> 

<form css="display: ${isLoggedIn() | cssdisplay}"></form> 

Boom, fatto.

+2

Vale la pena segnalare a chiunque incontri questa domanda e questa risposta in modo specifico: puoi semplicemente usare 'show.bind' al posto del convertitore di valori sopra. Effettivamente fa la stessa cosa e viene fuori dalla scatola in Aurelia. '

' –

+0

Non ha senso utilizzare un convertitore di valore quando Aurelia ha questa funzionalità incorporata. – nym

+0

Beh, quando si utilizza da beta :) –

3

Se è necessario rimuovere l'elemento completamente dalla marcatura quando la condizione non è soddisfatta, è possibile utilizzare if.bind (come ha risposto @Pratik Gajjar):

<template> 
    <div if.bind="auth.isLoggedIn"> 
    <!--this DOM element will be bind only if auth.isLoggedIn is true--> 
    </div> 
</template> 

Se è necessario impostare in modo condizionale display: none sull'elemento, si può utilizzare show.bind:

<template> 
    <div show.bind="auth.isLoggedIn"> 
    <!--this DOM element will be shown only if auth.isLoggedIn is true--> 
    </div> 
</template> 

Per i dettagli un'occhiata a http://aurelia.io/hub.html#/doc/article/aurelia/framework/latest/cheat-sheet/6.

Problemi correlati