我只需要在某些地方使用res.render函数,但它不会传递给我正在使用的回调。是不是某个地方是渲染功能的全球版本,还是有另一种方式来访问它?
答案 0 :(得分:3)
在Sails v0.10.4中有
sails.renderView(viewPath, options, callback);
此外,在渲染电子邮件时,您可能不需要使用布局。所以在致电sails.renderView
之前,请添加
options.layout = false;
答案 1 :(得分:2)
你真的不需要在 所有 的地方。
res
是一个响应对象,它仅在控制器中有意义,因为只有控制器处理请求处理和响应呈现。
您想使用模特,服务中的res.render
吗?也许是因为您认为所有代码始终处于 we_have_request_and_user_is_waiting_for_response 状态。
嗯,事实并非如此:模型方法和服务可以从sails控制台,后台工作者或代码调用,而不是按计划运行。在这些情况下,我们根本没有res
个对象。
控制器是专门设计用于包含响应逻辑的用户操作的地方。因此,您应该将该逻辑放在控制器中。 MVC
答案 2 :(得分:1)
从技术上讲,前面的发言者有些正确:有一个原因res
仅存在于控制器中。例如,如果它是一个CLI应用程序,并且根本没有HTTP意义上的请求/响应呢?
也就是说,如果你只需要为一个或另一个目的渲染一些HTML,你总是可以使用全局Express'渲染器,它不需要呈现响应:它可以通过sails.express.app.render
访问,参见{ {3}}方法的参数。