从JavaScript文件访问服务功能

时间:2018-03-14 15:00:59

标签: javascript sails.js

这里的Sails很新(部分接管另一个项目)。 我创建了一个服务并将其导出:

module.exports = {
    schedule: schedule
};

所以可以使用Schedule.schedule访问它。

我在我的视图中加载了一个JavaScript文件,但是当我尝试调用Schedule.schedule时,它说“Schedule not defined”,当我尝试调用时:

sails.services.Schedule.schedule() or sails.controllers.Schedule.schedule()

它返回“未定义风帆”的错误。

我过去只使用过Angular,但这只是风帆,看起来我无法从视图中访问我的控制器或服务,这是正确的吗?

谢谢=)

1 个答案:

答案 0 :(得分:2)

要理解的关键是你的一些代码是在服务器上运行的(可能是本地机器上的sails lift节点进程,或者某些远程linux框),你的一些代码由浏览器(chrome,firefox等)运行。

通常,这些文件不会一起工作。

  • 通常,/assets中的脚本由浏览器运行
  • 通常,/api中的任何内容都由服务器运行
  • 帆提供的整个module.exportrequire框架仅在服务器上提供,而不是在浏览器中提供。

观点是一个有点令人困惑的混合案例。视图存储在服务器上,当您使用它们时,<% %>之间的所有代码都在服务器上运行。但文件的其余部分被视为文本,而不是运行或解释,包括任何包含的脚本。

只有在浏览器中,您的脚本标签才会被读取和解释,并且脚本会被提取并运行。在浏览器中,无法访问module.exportssails对象等。