首页 > 解决方案 > 如何使用 exits 和 actions2 在sails 1.0 中设置动态viewTemplatePath?

问题描述

我正在尝试创建一个基于 url 传递的参数动态加载视图的操作

下面是我的routes.js

'GET faq/:alias': {actions:'faq'}

在我的faq行动中

module.exports = {
    friendlyName: 'FAQ Pages',
    inputs: {
        alias: {
            description: 'the page url',
            type: 'string'
        }
    },
    exits: {
        success: {
          statusCode: 200,
        },
        notFound: {
          responseType: 'notFound',
        }
    },
    fn: async function(inputs, exits) {
        console.log('static', inputs.alias);

        //something like this - set view tempalatePath
        //exits.success.viewTemplatePath = 'faqs/' + inputs.alias;
        //load view if exist else throw notFound

        return exits.success();
    }
};

我所有的常见问题解答都在一个文件夹中,我将检查物理文件是否存在require('fs').existsSync(),然后加载加载它

标签: node.jssails.js

解决方案


在您使用的 action2 格式中,您必须使用throw路由到备用出口。看:

https://sailsjs.com/documentation/concepts/actions-and-controllers

不要被这里的文档混淆:

https://sailsjs.com/documentation/reference/response-res/res-view

...我不知道它适用于什么,但它不适用于 1.0 中的 action2。


推荐阅读