我正在使用Node.js,Express和MongoDB构建博客。在我的“创建新帖子”模板中,我有一个标题字段和一个slug字段。
我正在使用来自NPM的Slugs for Node.js:https://npmjs.org/package/slugs
我想做的是:
所以我会输入“我最喜欢的角色是&”在标题字段中,别名字段中的值将动态更改为“my-favorite-character-is”。
我相信你必须做一些像这个问题中接受的答案: JADE + EXPRESS: Iterating over object in inline JS code (client-side)?
然而,更多的是引用变量而不是执行函数。而且似乎已经过预处理,然后您无法再访问它了。
我正在尝试做什么?
或者我应该选择这样的东西? https://github.com/stipsan/String.Slugify.js
这是我试图无效的:
!= "<script>"
!= "var post_title = document.getElementById('title');"
!= "var post_alias = document.getElementById('alias');"
!=
!= "var aliasValidator = function() {"
!= " this.value = " + slug( + "this.value" ) + ";"
!= "};"
!= "var titleValidator = function() {"
!= " post_alias.value = " + slug( + "this.value" ) + ";"
!= "};"
!=
!= "post_title.addEventListener({'keyup': titleValidator, 'keydown': titleValidator, 'change': titleValidator});"
!= "post_alias.addEventListener({'change': aliasValidator});"
!= "</script>"
这是传递变量的视图:
var slugs = require('slugs');
newPost: function(req, res) {
return res.render('add-post', {
title: "Write new post",
slug: slugs,
dayDateName: tools.dayName
});
}
答案 0 :(得分:1)
这应该与一些东西拼凑在一起:
public/slugs.js
文件中,以及browserify或RequireJS等更复杂的内容。从简单开始,但直接回答你的问题,不,你不能直接从浏览器中直接调用节点进程中存在的函数,但是你可以使用上述之一在节点和浏览器中共享相同的函数技术。对于jade,你不需要所有那些疯狂的!=
前缀,只需这样做(这与你的问题没有直接关系,只是FYI)。
script
var put = "your raw javascript here";
var jade = "knows what to do and you don't need prefixes or escaping";
答案 1 :(得分:0)
您编写模板的方式,似乎暗示该功能将在客户端执行。
这是不可能的。
相反,您应该使用ajax回调服务器来执行slug函数,或者预先计算所有值并将其发送给客户端。