Javascript 通过Sails.js中的action2将值传递给视图(及其部分)
我在Javascript 通过Sails.js中的action2将值传递给视图(及其部分),javascript,api,routes,sails.js,action,Javascript,Api,Routes,Sails.js,Action,我在config/routes.js中定义了一个到页面的简单路由,在该页面的局部视图中使用了一些局部变量,如下所示: routes.js: 'get/memo':{ 查看:“页面/备忘录”, 当地人:{ 第页:{ 标题:“备忘录”, 副标题:“Prendi note veloci,crea liste e presonalizza le tue TODO列表” } } } 而我的page.ejs看起来像这样: 这很好,我可以在局部视图中检索局部变量的值 现在,我想实现的是在显示页面之前调用
config/routes.js
中定义了一个到页面的简单路由,在该页面的局部视图中使用了一些局部变量,如下所示:
routes.js:
'get/memo':{
查看:“页面/备忘录”,
当地人:{
第页:{
标题:“备忘录”,
副标题:“Prendi note veloci,crea liste e presonalizza le tue TODO列表”
}
}
}
而我的page.ejs看起来像这样:
这很好,我可以在局部视图中检索局部变量的值
现在,我想实现的是在显示页面之前调用控制器action2,以便传递更多数据(然后能够在视图中格式化数据)
我在routes.js
中添加了一个新路由,该路由与api/controllers/memo/list.js中的单个操作2关联:
'get/api/v1/memo/list':{action:'memo/list'}
并编辑操作以返回所述视图:
。。。
投入:{
},
出口:{
成功:{
responseType:“视图”,
viewTemplatePath:“页面/备忘录”
}
},
fn:异步函数(输入){
//都做完了。
返回;
}
...
但是,调用它会在部分视图中的嵌入式js上出错,因为它无法(正确)访问原始路由中定义的对象(页面)。
(删除局部视图不会返回任何错误
)
另一个问题是,我找不到任何在使用actions2语法时如何在action和view之间传递数据的示例,如中所建议的那样
欢迎提供任何帮助,并提前感谢您的回答。从控制器/action2返回的数据不会直接发送到您的ejs页面,而是发送到assets/js/pages/your_page_name.page.js中的相关vue.parasails文件;在这里,您必须添加代码,然后调用另一个操作或将数据传递到查看您的页面\u name.ejs。在操作2中,您可以分别使用this.res
和this.req
访问res和req
。对于您的用例,您可以执行以下操作:
返回此.res.view('pages/memo'{
//你想传多少本地人就传多少
第页:{
标题:“备忘录”,
副标题:“Prendi note veloci,crea liste e presonalizza le tue TODO列表”
}
})
简单方法:
exits: {
success: {
viewTemplatePath: 'pages/product-type/view-product-type'
},
},
fn: async function () {
return {value1: 'a', value2: 'b'};
}
您还可以使用:
fn: async function (inputs, exits) {
return exits.success({value1: 'a', value2: 'b'});
}
如果希望响应为html:
exits: {
success: {
statusCode: 200,
responseType: 'htmlResponse',
description: ''
}
},
fn: async function(inputs, exits){
let ejs = require('ejs');
let cb = function(err, html){
if (err){
return exits.serverError(err);
}
return exits.success(html);
};
ejs.renderFile('./views/templates/dataTables.ejs',{someData: {a: 1, b:2}}, cb);
return cb;
}
编辑:
您还可以向客户端公开服务器值
然后可以通过窗口访问它们。SAILS\u LOCALS
f、 e:
更多:
beforeMount: function() {
this.data = window.SAILS_LOCALS['data'];
}