Javascript algolia中基于小胡子的逻辑结果
如果我有一个moustach属性,比如说Javascript algolia中基于小胡子的逻辑结果,javascript,mustache,algolia,Javascript,Mustache,Algolia,如果我有一个moustach属性,比如说{{{stockvalue}},并且我希望根据{{stockvalue}}的值在周围的div中使用不同的类,那么说: <div class="label-success">{{stockvalue}}</div> 这个javascript提取stockvalue数据并将其应用到html中,但我认为没有办法对stockvalue变量进行任何逻辑处理,因为它在这个javascript中从未出现过。您不能在MustacheJs中使用三元
{{{stockvalue}}
,并且我希望根据{{stockvalue}}
的值在周围的div中使用不同的类,那么说:
<div class="label-success">{{stockvalue}}</div>
这个javascript提取stockvalue数据并将其应用到html中,但我认为没有办法对stockvalue变量进行任何逻辑处理,因为它在这个javascript中从未出现过。您不能在
MustacheJs
中使用三元运算符,因为它是无逻辑的。但是,有几个选项,或者根据对象的值向对象中添加值,然后将其呈现为class=“{{className}}”
或类似的形式。。。或者在呈现视图后使用javascript,如下所示
选项1。。。(记住在mustache对象中包装变量!这是一个逻辑示例!)
查看
<div class="{{class}}">{{stockvalue}}</div>
选择2
查看
<div id="rendered">{{stockvalue}}</div>
不能在
MustacheJs
中使用三元运算符,因为它是无逻辑的。但是,有几个选项,或者根据对象的值向对象中添加值,然后将其呈现为class=“{{className}}”
或类似的形式。。。或者在呈现视图后使用javascript,如下所示
选项1。。。(记住在mustache对象中包装变量!这是一个逻辑示例!)
查看
<div class="{{class}}">{{stockvalue}}</div>
选择2
查看
<div id="rendered">{{stockvalue}}</div>
因此,您的胡须数据对象定义如下:
var mustacheData = {"stockvalue":50}
mustacheData['stockvalue_class'] = function(){
if ( this['stockvalue'] > 0 ) { return "label label-success"; }
else { return "label"; }
}
然后在HTML模板中执行以下操作:
<div class="{{stockvalue_class}}">{{stockvalue}}</div>
{{stockvalue}
因此,您的胡须数据对象定义如下:
var mustacheData = {"stockvalue":50}
mustacheData['stockvalue_class'] = function(){
if ( this['stockvalue'] > 0 ) { return "label label-success"; }
else { return "label"; }
}
然后在HTML模板中执行以下操作:
<div class="{{stockvalue_class}}">{{stockvalue}}</div>
{{stockvalue}
这两个答案都是解决问题的很好的基础,您唯一缺少的是将其与instantsearch.js集成的方法
下面介绍如何使用transformData
widget选项执行此操作,该选项允许您在渲染之前根据模板需求调整点击数据:
search.addWidget(
instantsearch.widgets.hits({
container: '#hits',
hitsPerPage: 5,
transformData: {
item: function(hit) {
hit.stockValueClass = hit.stockvalue > 0 ? 'label-success' : 'label';
return hit;
}
},
templates: {
item: getTemplate('hit'),
empty: getTemplate('no-results')
}
})
);
然后,您可以在模板中使用stockValueClass
值:
<div class="{{stockValueClass}}">{{stockvalue}}</div>
{{stockvalue}
这两个答案都是解决问题的很好的基础,您唯一缺少的是将其与instantsearch.js集成的方法
下面介绍如何使用transformData
widget选项执行此操作,该选项允许您在渲染之前根据模板需求调整点击数据:
search.addWidget(
instantsearch.widgets.hits({
container: '#hits',
hitsPerPage: 5,
transformData: {
item: function(hit) {
hit.stockValueClass = hit.stockvalue > 0 ? 'label-success' : 'label';
return hit;
}
},
templates: {
item: getTemplate('hit'),
empty: getTemplate('no-results')
}
})
);
然后,您可以在模板中使用stockValueClass
值:
<div class="{{stockValueClass}}">{{stockvalue}}</div>
{{stockvalue}
Hi,这两种解决方案都表明我可以在javascript中使用stockvalue,我似乎不太清楚如何使用instantsearch.js(我忘了提到我正在使用的instantsearch.js)填充该变量我已经添加了一些关于在问题中使用algolia instantsearch的问题的更多信息。抱歉@MattLuccasPhaureJensen,我不熟悉这个框架。我能给出的唯一建议是确定如何从agolia捕获响应并将其分配给控制器中的值。嗨,这两个解决方案都表明我可以在javascript中使用stockvalue,我似乎并不完全清楚如何使用instantsearch.js(我忘了提到我正在使用的)填充该变量我已经添加了一些关于在问题中使用algolia instantsearch的问题的更多信息。抱歉@MattLuccasPhaureJensen,我不熟悉这个框架。我能给出的唯一建议是确定如何捕获agolia的响应,并将其分配给控制器中的值。我详细说明了问题,以便您可以看到我可能无法使用您的解决方案。我详细说明了问题,以便您可以看到我可能无法使用您的解决方案。