2015-06-23 7 views
13

Also im Grunde möchte ich etwas tun, was ich in Ember mit Lenker tun kann, aber ohne Verwendung von Ember nur sails.js und Lenker.Äquivalent von Ember.js Ausbeute in Sails.js w/Lenker (SPA-Stil)

Ich setze Segel Projekt so: sails new fooProject --template=handlebars nach dem Lauf npm install sails-generate-views-handlebars.

Großartig Ich habe eine Layout-Datei, alle meine Dateien enden in .handlebars woot.

Aber ich möchte so etwas tun:

Aufrufe:

views/index.handlebars

{{>header}} 
    {{yield}} 
{{>footer}} 

/views/partials/foo.handlebars

<div class="foo stuff">...</div> 

R Außen:

config/routes.js

'/': { 
    view: 'index', 
    controller: 'FooController', 
    action: 'index' 
} 

Controller:

controllers/FooController

index: function(req, res){ 
    return res.view({partials: 'partials/foo'}); // <-- I want foo partial in the yield. 
} 

Damit ich mit diesem Ausgang am Ende:

<header>...</header> 
    <div class="foo stuff"> 
<footer>...</footer> 

Immer, wenn mein Benutzer navigiert, möchte ich den neuen Partial in diesen {{yield}} Block rendern, ohne die Seite neu zu laden. Aber das funktioniert nicht (ich habe es versucht). Also, wie würde ich das erreichen?

Um zu verdeutlichen, was ich mache, ist eine Single-Page-Anwendung fühlen, ohne auch ein Front-End-Framework zu verwenden.

+0

Wenn nichts geändert wurde, rendert sails die Vorlage im Backend, also glaube ich, dass es keine Möglichkeit gibt, dies ohne ein Frontend-Framework einfach zu tun. –

Antwort

2

Es kann nicht ohne Front-End-Framework (oder verwenden Sie grundlegende XHR/AJAX Vanille JS, wenn Sie möchten). Da Sails serverseitig Engine- und Renderingseiten auf Serverseite sind, muss die Seite neu geladen werden.

Sie können ein beliebiges Front-End-Framework verwenden, und Sie erhalten alle Teilansichten aus Sails 'Ansichten, wenn Sie eine Hybrid-Frontend- (Teillast) und Back-End- (Sails) View-Engine verwenden möchten.

+0

Also, ich bin mir bewusst, dass die Segel im Backend gerendert werden, ich schätze, ich suche eher nach einer Möglichkeit, mit der ich teilweise auf einen Ajax-Anruf antworten könnte. Also ja, wie ein hybrides System. Ich möchte Routing auf dem Backend und ich mache einige Seitenladungen, aber ich möchte einige einzelne Seite * Stil * Portionen. – Ryan

+0

Um "hybrid system" wie erwähnt zu erstellen, erstellen Sie einfach eine Ansicht wie gewohnt in Sails. ABER diese Ansicht ist kein ganzer HTML. Lemme ein Beispiel geben, unter der Annahme, dass Sie verwenden Asngular und Angular-ui-Router: Layoutansicht: '' dies Ihr Grundlayout sein sollte. Körperansicht: '

here is body
' Sie können sowohl die Sails-Rendering-Engine (EJS, Dust, etc.) als auch die Angular-Rendering-Engine in beiden Ansichten verwenden. Aber denken Sie daran, nur einen Körper zu nennen und Ihr Hauptlayout einzubauen. –