Javascript handlebar.JSON基于值/对的JSON设置类

Javascript handlebar.JSON基于值/对的JSON设置类,javascript,css,json,handlebars.js,Javascript,Css,Json,Handlebars.js,今天刚开始看handlebar.js,想要一个清晰的方法。假设如下:我们无法控制JSON的创建方式(因此没有服务器端解决方案)。JSON将包含1条或多条记录。在每个记录中,都会有一个消息类型名称/值对,其值在演示中使用css类的某些函数中非常有用 例如:消息类型:基本、广告、通知、警告、关键。每个消息类型都有一个css类。所以关键消息类型可能会得到classes.msg\u box.critical\u msg 我应该怎么做(记住,我们不能更改原始来源)。?选项1:在handlebar之前处理j

今天刚开始看handlebar.js,想要一个清晰的方法。假设如下:我们无法控制JSON的创建方式(因此没有服务器端解决方案)。JSON将包含1条或多条记录。在每个记录中,都会有一个消息类型名称/值对,其值在演示中使用css类的某些函数中非常有用

例如:消息类型:基本、广告、通知、警告、关键。每个消息类型都有一个css类。所以关键消息类型可能会得到classes.msg\u box.critical\u msg


我应该怎么做(记住,我们不能更改原始来源)。?选项1:在handlebar之前处理json数据,并为每个包含适当类的类添加名称/值对。选项2:我不清楚把手的某些方式

我相信Handlebar约定是在将结果对象传递给Handlebar模板之前,解析JSON并将适当的类名添加到结果对象中,但我认为这是普遍不赞成的

var messageMapping={
基本:“味精盒”,
广告:‘味精盒’,
通知:'msg_box',
警告:“严重信息”,
关键:“关键信息”
};
//您的数据来自服务器
var yourJSON='[{“消息类型”:“基本”,“值”:“测试”},{“消息类型”:“警告”,“值”:“测试”}];
var data=JSON.parse(yourJSON),
i=0,
l=数据长度;
//更新类名
对于(;i
.critical\u msg{
背景色:红色;
}
.味精盒{
背景颜色:绿色;
}

{{{#每条消息}
{{value}}
{{/每个}}

把手的设计相当“无逻辑”,这意味着它没有内置功能,无法根据传入的数据做出决策,而不是基于数据中是否存在某些内容的简单
。根据某个数据结构元素的值来决定在HTML中放入哪个类不是内置功能

因此,您的选择是:

  • 假设模板在客户端使用,您可以在客户端对JSON进行预处理,在将其发送到模板之前将其放入无需逻辑的表单中

  • 创建可以向其传递数据的助手方法,它们可以根据这些方法做出决策,并将这些决策传递回模板

  • 添加可以向模板添加逻辑功能的帮助器方法(您可以找到一些预构建的方法)

  • 切换到具有更多内置逻辑功能的模板引擎


  • 这个很好用。我认为在传递给Handlebar之前解析json是一种方法,但听起来这是标准方法。非常感谢你!正如我对另一个答案的回答一样,我最初的想法是先解析json。@FreddyNoNose-您可以选择其中一个答案作为“最佳答案”,方法是选中该答案左侧的绿色复选标记。