2017-03-01 6 views
0

Ich habe Segel ausprobiert und bisher konnte ich einen Index aller Artikel in einem Datenbanktabellenmodell anzeigen. Allerdings habe ich zwei verschiedene Modelle, ModelA und ModelB, und ich möchte sie in einer einzigen Ansicht namens Dashboard im Stamm der Ansichten -/Dashboard anzeigen.Sails.js mehrere Controller/Modelle zu einer Ansicht

Allerdings habe ich eine schwere Zeit zu versuchen zu verstehen, wie die verschiedenen Controller die Liste auf dem Armaturenbrett angezeigt bekommen. Wie bekomme ich das, kann es mit den zwei verschiedenen Controllern gemacht werden und wenn ja wie. Oder kann ich einen separaten Controller namens Dashboard erstellen, der die verschiedenen Instanzen der Modelle aufruft?

eine harte Zeit Verpackung, meinen Kopf um diese zu haben ...

+0

Sie würden einen Controller mit einer Dashboard-Funktion (oder w/e) haben und dieser Controller würde eine Ansicht rendern und die benötigten Daten an sie übergeben. ODER, Sie rendern die Ansicht mit einem Controller und innerhalb der Ansicht holen Sie die Daten mit einer Anfrage (Sie würden von einer Controller-Aktion abrufen, die nur Daten und keine Ansicht zurückgibt) – yBrodsky

+0

Gibt es eine Möglichkeit, auf die ich meinen Controller hinweisen kann meine Ansicht in einem anderen Verzeichnis? res.vew zeigt auf/views/mycontroller/dashboard, während ich das Dashboard im root von/views/dashboard habe. – mattbz

+1

Ja, res.view verwendet als Parameter den Pfad zur Ansicht. Sie können setzen, was Sie wollen. Darüber hinaus können Sie eine Route in routes.js konfigurieren und dort die Ansicht angeben. http://sailsjs.com/documentation/reference/response-res/res-view – yBrodsky

Antwort

0

Wenn ich richtig verstehe, wollen Sie einen Controller, der Daten von zwei verschiedenen Modellen holt und sendet diese Daten in einer Ansicht.

Da Knoten jetzt unterstützt, würde ich Async/erwarten für das Beispiel, aber es ist die gleiche mit Rückrufen, aber Sie müssen Ihre Anrufe verschachteln oder verwenden coolan async.

const DashBoardController = { 
    async show(req, res){ 
    const instanceA = await ModelA.findOne(1) // I used a hardcoded number for simplicity 
    const instanceB = await ModelB.findOne(1) 
    res.view('mycrontroller/dashboard', {instanceA, instanceB}) 
    } 
} 

export DashBoardController; 

dann Ihrer Ansicht nach greifen Sie es nur mit dem Namen der Tasten, die Sie definiert ... instanceA und instanceB

Wenn das nicht das, was gemeint Sie, dann lassen Sie es mich wissen.

Verwandte Themen