Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过Sails.js中的action2将值传递给视图(及其部分)_Javascript_Api_Routes_Sails.js_Action - Fatal编程技术网

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'];
}