Tag: handlebars.js

Node Express Handlebars助手不返回函数的结果

我对这个感到困惑。 如果我在一个句柄帮助器中使用一个函数并返回该函数的结果,则不会返回任何结果。 这是模板: <ul> <li>{{formatid this.id}}</li> </ul> 这里是帮手: formatid : function(id){ mOrders.formatOrderID(id, function(err, formatted_id){ // err is always null, no need to handle console.log(formatted_id); return formatted_id; }); } 然而,尽pipe正确的文本被logging到控制台,结果html是: <ul> <li></li> </ul> 但是,如果我在formatOrderID()函数结束之后放置了一个返回值,它将返回,所以: formatid : function(id){ mOrders.formatOrderID(id, function(err, formatted_id){ // err is always null, no need to handle console.log(formatted_id); return formatted_id; }); return 'some_text'; } […]

为什么不更新default.hbs显示在博客上?

我已经在Amazon EC2实例上安装了Ghost,到目前为止它已经运行得非常好。 今天,我想在主题的default.hbs(我使用默认的casper主题)进行一些更改,以获得代码语法突出显示。 (我试图添加棱镜。)我编辑了content / themes / casper / default.hbs文件,并添加了css和js,如下所示: <link rel="stylesheet" type="text/css" href="{{asset "css/prism.css"}}" /> 但是,这些更改没有显示在我的博客上。 然后,为了testing我的编辑是否正常工作,我在site-wrapper div之后添加了一些内容: <div class="site-wrapper"> <h2>Testing editing the default.hbs</h2> 但是,这些变化也没有在博客上显示出来。 我已经尝试重新启动幽灵,并重新启动整个Web服务器。 可能是什么问题? 我是否必须以某种方式重新编译网站,或者删除一些caching等?

如何在Sails.js上注册一个Handlebars partial partials文件夹?

我的Sails.js应用程序中有以下文件夹结构: assets/ myModule/ views/ partials/其中myModule是一个Backbone组件(虽然我的客户端不是一个完整的Backbone应用程序) 有一个Handlebar部分x.handlebars需要通过服务器和客户端呈现。 当客户端不能访问 views/时,我的斗争就开始了,因此无法在Backbone模块上加载它。 然后我试图将其移动到assets/myModule/templates/这将是可访问的,但现在我的主要模板views/layout.handlebars无法加载该部分,如果我尝试这样的: {{> ../assets/myModule/templates/x}} 这不起作用(我假设Handlebars使用视图/作为布局的根级别)。 在这种情况下我只能看到两种可能的解决scheme: 复制这些布局,并在每个位置使用一个(不理想,但工作) 将其放置在assets/myModules/templates/x并在Sails上注册一个Handlebars部分,以使其可用于服务器端呈现。 我怎么能做第二个解决scheme? 是否有可能注册一个全局部分的方式,我们可以做同样的方式与帮助function在config/views.js ? 我的目标是在控制器之外的configuration级别使用Handlebars.registerPartial函数,以便部分可以被其他模板重用。

将handlebarsvariables传递给客户端js文件

我使用node.js + express + handlebars构build应用程序,并正在寻找一种方法,可以将句柄数据从服务器传递到客户端JavaScript文件。 例如: //server.js var person = { name: George, age: 32, } res.render('../views/person', person) 我希望能够在客户端使用person对象,例如: //client.js console.log(person.age); console.log(person.name); 有人可以帮忙吗? 谢谢!

把手和Javascript

在把 partials包含js文件作为partials是一个好习惯? 我的意思是,我需要在我的基于jquery的javascript中使用来自nodejs一些数据,并且做到这一点,我加载我的js作为partials模板中的部分,然后直接使用句柄符号,这样: $(document).ready(function() { var myVar = {{value_from_db}}; }); 我知道这不是正确的方法,我希望我已经解释了我需要的东西。 在我的情况下,我需要在js使用MapBox坐标,坐标是从数据库中获取的,方法如下: var map = L.mapbox.map('map', 'mapbox.streets', { zoomControl: false, attributionControl: false }).setView([my_lat, my_lng], 3);

如何在其他助手声明中调用句柄助手?

是否有可能调用已经注册的帮手,而宣布新的? 例如 : Handlebars.registerHelper('td', function(text, options) { return "<td>" + text + "<td>"; }); Handlebars.registerHelper('tr', function(cells, options) { return "<tr>" + (cells.map(cell => { return td(cell); // it is where I want to call my other helper }).join("")) + "<tr>"; }); 上面的例子只是一个例子 ,不是我真实的情况,这会使得呈现的问题过于复杂。 目前为止,根据帮助者的问题,我发现的仅仅是子expression式 ,但似乎并不适用于我的情况。 我正在使用具有视觉的hapijs ,如果这很重要的话,无论纯粹的车把解决scheme,如果存在,就足以让我在我的环境中重新创build它。

res.render()在一种情况下工作,但不在另一种情况下工作

在下面的代码中,为什么res.render('home'); 工作,但res.render('update'); 才不是? 这是使用Node.js,Express和Handlebars运行的。 文件结构 myApp │ ├───app.js │ ├───public │ │ │ └───scripts │ buttons.js │ └───views │ home.handlebars │ update.handlebars │ └───layouts main.handlebars app.js var express = require('express'); var app = express(); app.use(express.static('public')); var bodyParser = require('body-parser'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); var handlebars = require('express-handlebars').create({defaultLayout:'main'}); app.engine('handlebars', handlebars.engine); app.set('view engine', 'handlebars'); app.set('port', 3000); […]

助手在快速把手

我在节点js中使用快速句柄作为模板引擎。 我已经编写了app.js中的handlebar的帮助器。 我怎样才能从hbs文件传递这些帮助参数。 helpers: { ifCondition : function (value, value2) { if(value == value2){ return "selected"; }else{ return value + '/ '+ value2; } }, formatNumber : function (number, limit){ var formattedNum = number.toString().replace(/[^0-9.]/g, ""); formattedNum = formattedNum.replace(/(\r\n|\n|\r)/gm," "); formattedNum = formattedNum.replace(/\s+/g," "); if(formattedNum){ return formattedNum = '00971'+ formattedNum.substring(formattedNum.length-limit, formattedNum.length); }else{ return '—'; } } […]

我怎样才能使用两个不同的路线呈现一个Handlebars文件?

我正在从新闻网站上刮取文章。 我已经成功地刮掉了文章,数据成功地到达了前端。 (它console.log正确)。 我的问题是,我无法使用button将数据呈现到页面上 – 数据只在刷新时填充页面。 我知道这个问题与Handlebars有关,因为如果我尝试使用jQuery呈现页面,它就可以工作。 我相信这与我的路线有关。 我通过/ articles路由将数据发送到页面,但正如您所看到的,我没有具体使用res.render或res.redirect。 我想这就是为什么它不起作用? 但是,我不知道如何解决这个问题。 我在路由和callback方面有点不稳定。 我是新来的编码,但我向你保证,我已经研究和尝试了无数的修复无济于事。 任何帮助或指导表示赞赏。 谢谢。 app.get("/", function(req, res) { db.Article .find({}) .then(function(dbArticle) { // res.render("index"); res.render("index", { articles : dbArticle }); }); }); app.get("/scrape", function(req, res) { axios.get("https://www.nytimes.com/section/technology? action=click&pgtype=Homepage&region=TopBar&module=HPMini Nav&contentCollection=Tech&WT.nav=page") .then(function(response) { var $ = cheerio.load(response.data); $("a.story-link").each(function(i, element) { var results = {}; results.link […]

express-hbs实例注册AsyncHelper奇怪的哈希

我正在使用express-hbs nodejs模块,我有一个使用registerAsyncHelper的问题。 我需要在限制范围内编译一个布局,因为我已经创build了一个新的Handlebars实例,并且在这个实例中创build了一个帮助器。 但是当我编译布局时,它会返回一个奇怪的散列。 我的代码是这样的: var hbs = require('express-hbs'); var hbs_temp = hbs.create(); hbs_temp.registerAsyncHelper( 'content', function( text, cb ) { fs.readFile( 'some-file', { encoding: 'utf8' }, function( err, data ) { cb( new hbs_temp.SafeString( data ) ); }); }); hbs_temp.compile( '<div> {{content}} </div>' )( );` 结果: <div> __WEIRD HASH__ </div> 我的问题是。 我的代码有问题,或者这是一个“express-hbs”错误? 谢谢!