2015-04-24 5 views
7

Sto costruendo un'applicazione per un cliente in cui sto sviluppando un servizio Web utilizzando Laravel5 in fondo e lo consumerò con lo Smart Admin Theme, in particolare la versione Ajax.Come inserire i dati dei template nella versione Ajax del tema Smart Admin?

Ho già lavorato con la versione HTML di questo tema e stavo ancora utilizzando Laravel come back-end. Potrei semplicemente usare il motore di template Blade fornito da Laravel e iniettare i dati nelle viste.

Ma ora poiché utilizzerò la versione Ajax, come dovrei modellare i dati nelle viste. Posso richiedere il servizio web per i dati e lo restituirò in formato JSON. Questa parte è chiara per me come ho fatto prima.

La maggior parte dei widget ha un'integrazione integrata come le tabelle di dati jQuery e la libreria di calendario completa utilizzata nel tema. Posso vedere i dati verranno iniettati qui, ma per quanto riguarda il forum e altre cose. Dovrei manipolare il DOM usando Jquery o c'è un modo migliore.

Angular fornisce un modo in cui i dati bidirezionali possono vincolare i dati in arrivo e posso usare ng-repeat per iniettarlo in tabelle e liste non ordinate, ma come farò qui. C'è un sistema di template che posso usare per questo?

risposta

2

Grazie per le vostre risposte ma sfortunatamente non ho potuto dare un senso a queste. Tuttavia apprezzo il tuo contributo.

Infine ricorro alla libreria rivet.js. Questa libreria fornisce una soluzione per il binding dei dati leggera e potente + per la creazione di moderne applicazioni Web.

Hanno un buon documentation per aiutare con lo sviluppo.

Ora posso dati semplicemente modello nel viste come { data.someAttribute } come nel seguente frammento di codice:

<section id="auction"> 
    <h3>{ auction.product.name }</h3> 
    <p>Current bid: { auction.currentBid | money }</p> 

    <aside rv-if="auction.timeLeft | lt 120"> 
    Hurry up! There is { auction.timeLeft | time } left. 
    </aside> 
</section> 

E poi posso semplicemente legare il tag sezione # asta con l'oggetto JSON all'asta in questo modo:

rivets.bind($('#auction'), {auction: auction}) 

Ciò ha reso molto semplice recuperare i dati dal server e creare i dati nelle viste. Ora lo stesso servizio web back-end può essere eventualmente utilizzato dalle applicazioni mobili.

Spero che questo aiuti qualcuno. :)

0

Capisco che finora tu stia usando Laravel per rendere l'HTML per te. Ora vuoi che il sito HTML/JS sia ospitato su un'altra macchina e ottieni tutti i valori dinamici di Laravel tramite l'API.

Se questo è il caso, in effetti è necessario implementare tutte le funzioni dinamiche da soli ed è un lavoro considerevole.

Puoi anche utilizzare la stessa applicazione laravel e lasciare che serva il tuo HTML/JS statico in una parte del sito dove chiamerai i valori dal back-end sull'API e manterrai l'altra parte del sito "normale" dove lascerai il rendering di Laravel l'HTML che non ha bisogno dell'API per ottenere i suoi valori dinamici.

+0

Ma come renderò le viste da Laravel? La versione Ajax ha il proprio router e si comporta come un'applicazione a singola pagina. Solo una vista viene resa tramite laravel. Tutti gli altri sono resi dal tema stesso. Inietta il contenuto della pagina particolare che stai visualizzando all'interno del contenuto div #. Spero di capire cosa hai detto correttamente. – Rohan

+0

Se si passa all'approccio HTML5, è possibile restituire la visualizzazione HTML standard dal percorso. Questa vista includerà JavaScript che chiamerà altri percorsi nella tua applicazione Laravel per riempire gli spazi vuoti nel tuo html. –

+0

Quindi, se sto capendo bene, mi stai fondamentalmente dicendo di usare l'approccio HTML5 e di restituire la pagina dashboard/indice e il javascript determinerà quando si fa clic su un altro percorso e dovrei semplicemente richiamare la sezione del contenuto restituita da Laravel di tutta la pagina? È questo che stai suggerendo? Mi scuso se ho frainteso. Ma in questo modo non posso usare l'API back-end con le applicazioni mobili in un secondo momento e non trarrà molto beneficio se non l'aggiornamento di pagine basse, giusto? – Rohan

0

Questa risposta è iniziato come un commento e fu trasformata in ad una risposta ..

Se si sta utilizzando angolare l'approccio migliore è quello di mantenere i modelli sul app angolare e ottenere i dati da un api. Nel tuo caso Laravel sarà la tua API.

Si utilizzerà un metodo di autenticazione come JWT (token Web JSON) per l'autenticazione e il recupero dei dati dal server tramite l'API. Questo è molto facile da fare su Laravel.

Tutti i dati saranno ricevuti come json e possono essere facilmente resi su modelli sul browser client con angolare. Non hai bisogno di jQuery, puoi usare la direttiva Angular per il bootstrap (cinghia angolare).

Non ho controllato questo tema. Ma se NON è stato scritto usando direttive angolari, sarà difficile per voi rendere i dati usando i template lato client.

+0

Grazie per aver risposto. Hai ragione su questa roba, ma io non sono uno sviluppatore esperto di JS Angular e sento che resterò bloccato e le scadenze ne risentiranno e quindi sto usando la versione Ajax. Come modellare i dati in questo? – Rohan

+0

quindi immagino che il metodo più semplice per te sia restituire di conseguenza le parti html di cui hai bisogno e aggiungere, aggiornare o rimuovere parti usando js. Hai bisogno di un esempio? – astroanu

+0

Capisco in questo modo ma questo tema particolare non recupera le parti dal back-end. Le parti vengono prelevate da un'altra cartella solo nel front-end. Più sul mio cliente desidera che il front-end dell'applicazione e il back-end siano disaccoppiati in modo che il servizio Web possa in seguito accogliere anche le applicazioni mobili. Spero di avere un senso. – Rohan

Problemi correlati