使用Handlebars.js从“where”中选择“select”

时间:2016-05-26 19:26:36

标签: javascript jquery handlebars.js

我可能会在这里稍微过度工作,但是对于如何完成这项工作的任何见解都将不胜感激。

使用handlebars.js作为模板引擎,我需要查询data-attribute文件,并从此处循环显示对象中的数组文件。该流程的工作方式如下:如果点击上的$attr = "Red"; $prodcuts = DB::table('products')->Where('tags', $tag)->get(); 定义的值与对象中的字符串相匹配然后,数组循环并根据这些条件显示数据。

基本上我需要一个查询,就像我会追​​溯到一个数据库,(使用Laravel),例如:

json

我正在为一个非常大的Handlebars.registerHelper("ifValue", function(conditional, options) { if (conditional !== options.hash.equals) { return options.fn(this); } else { return options.inverse(this); } }); 文件工作。例如,如果您需要参考,我会创建一个小得多的文章:

https://gist.github.com/Panoply/15dc30a9fc598d07b24f0f13a5d42df4

我知道使用 handlebars.js 我需要创建一个帮助器来创建一个带有值的字符串:

<ul>
{{#each products}}
{{#ifvalue tags equals='Blue'}}

<li>{{title}}</li>
<li>{{handle}}</li>
<li>{{tags}}</li>
{{#with images.[0]}}<li>{{src}}</li>{{/with}}  
{{#with variants.[0]}}<li>{{price}}</li>{{/with}}

{{/ifvalue}}
{{/each}}
</ul>

然后我会让我的把手循环:

object array

问题是我得到一个空白的结果。您可以在http://tryhandlebarsjs.com/尝试这些代码块 - 考虑到代码位于 <a href="@(Url.Action<SchedulesController>(c=>c.Edit(schedule.Id)))" class="date">@Html.DisplayFor(m => schedule.UTCStartDate, new { @Value = schedule.UTCStartDate.ToString("dd-MMM-yyyy") })</a> 我可能会遇到一些冲突。

任何想法,再次非常感谢。

1 个答案:

答案 0 :(得分:1)

想出来。把手很敏感。如果您偶然发现了这一点,我就是这样修理的:

车把:

{{#products}}
{{#inArray tags "Red"}}
   {{title}}
 {{#with images.[0]}}<img src="{{ this.src }}">{{/with}} 
{{/inArray}}
{{/products}}

助手(创建一个inArray):

Handlebars.registerHelper('inArray', function(array, value, options) {
    if (array.indexOf.call(array, value) >= 0) {
      return options.fn(this);
    } else {
      return options.inverse(this);
    };
});