Sails.js多个控制器/模型到一个视图

问题描述:

我一直在尝试出帆,到目前为止我已经能够显示数据库表模型中所有项目的索引。但是,我有两个不同的模型,modelA和modelB,我想将它们显示在视图根目录/ dashboard中的称为仪表板的单个视图中。Sails.js多个控制器/模型到一个视图

但是,我很难试图了解如何让不同的控制器在仪表板上显示列表。我如何完成这项工作,是否可以通过两个不同的控制器完成,如果可以的话如何完成。或者我可以创建一个名为仪表板的单独控制器,调用模型的不同实例吗?

有一个很难包装我的头解决此...

+0

您将拥有带仪表板功能(或w/e)的控制器,并且该控制器将呈现视图并将其传递给您需要的数据。或者,您使用某个控制器渲染视图,并在视图内使用请求获取数据(您将从控制器操作中获取数据而不是视图) – yBrodsky

+0

有没有一种方法可以让我的控制器指向我的观点在不同的目录? res.vew指向/ views/mycontroller/dashboard,而我的仪表板位于/ views/dashboard的根目录。 – mattbz

+1

是的,res.view将param视为路径。你可以放任何你想要的。另外,你可以在routes.js中配置一个路由并在那里指定视图。 http://sailsjs.com/documentation/reference/response-res/res-view – yBrodsky

如果我理解正确的,你想有一个控制器,取2个不同的数据模型和数据发送到一个视图。

因为节点现在支持它,所以我会使用async/await作为示例,但它与回调相同,但您必须嵌套您的调用或使用caolan异步。

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

如果这不是你的意思,然后让我知道。