2017-03-01 10 views
0

私は帆を試してきましたが、これまではデータベーステーブルモデルのすべてのアイテムのインデックスを表示できました。しかし、modelAとmodelBの2つのモデルがあり、それらをビューのルートのダッシュボード - /ダッシュボードに表示するといいです。Sails.js複数のコントローラ/モデルを1つのビューに表示

しかし、私は、異なるコントローラにダッシュボードにリストを表示させる方法を理解しようとするのが苦労しています。どのようにすればこれを行うことができますか?2つの異なるコントローラーで行うことができますか?または、モデルの異なるインスタンスを呼び出すダッシュボードという別のコントローラを作成できますか?このまわりで私の頭をラップに苦労して

...

+0

ダッシュボード機能(またはw/e)を備えたコントローラーがあり、そのコントローラーはビューをレンダリングして必要なデータを渡します。または、いくつかのコントローラでビューをレンダリングし、ビュー内でリクエストを使ってデータをフェッチします(ビューではなくデータだけを返すコントローラアクションからフェッチします) – yBrodsky

+0

コントローラをポイントする方法はありますか別のディレクトリに私のビュー?/views/dashboardのルートにダッシュボードがある間、res.vewは/ views/mycontroller/dashboardを指します。 – mattbz

+1

はい、res.viewはビューのパスをパラメータとして取ります。あなたはあなたが望むものを置くことができます。さらに、routes.jsでルートを設定し、そのビューを指定することもできます。 http://sailsjs.com/documentation/reference/response-res/res-view – yBrodsky

答えて

0

私が正しく理解していれば、あなたは2つの異なるモデルからデータを取得し、ビューにするデータを送信し、コントローラをしたいです。

ノードはこれをサポートしているので、例ではasync/awaitを使用しますが、コールバックと同じですが、コールをネストするか、caolan 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; 

次に、あなたのビューであなたはちょうどあなたが定義されているキーの名前とそれにアクセス... instanceAinstanceB

それはあなたが何を意味するのかではありません場合は、私に知らせてください。

関連する問題