如何使用 jsRender 测试对象列表中的值

How do I test a value on a list of objects using jsRender

我是 jsRender 的新手。在我的模型上,我有类似的东西:

public List<BasketOptions> Basket {get; set;}

我知道在 jsRender 中我可以这样做:

{{if Basket.length }}

如果我在篮下,这将 return 是真还是假。

我正在尝试做并需要一些帮助的是,在我的 BasketOptions 对象上我有一个布尔值 'Selected' 标志。我需要能够测试任何选定的标志是否为真。任何人都可以提供或指出一个很好的例子来说明如何做到这一点。我假设我需要调用一个 Javascript 函数来传递我的 Basket 对象并确定那里的值,但这就是我如何调用 javascript 函数和 return jsRender 测试的值。

所以我创建了一个 javascript 函数:

<script>
   function GetBasketSelected(options) {
   var optionSelected = options.find(function (option) {
     return option.Selected;
   });
   return optionSelected;
}
</script>

并调用我的脚本:

{{ if ~GetBasketSelected(Basket) }}
……
{{/if}}

我在 chrome 浏览器的 javascript 函数中设置了一个断点,它永远不会被命中。

所以我也尝试了以下但没有运气:

{{ if :~GetBasketSelected(Basket) }}
    ……
{{/if}}

<script>
   $.views.helpers({
       GetBasketSelected: function(options) {
       var optionSelected = options.find(function (option) {
         return option.Selected;
       });
       return optionSelected;
    }
   });
</script>

如果Selected是属性个Basket,可以写

{{if Basket.Selected}}...{{/if}}

{{if Basket.Selected===true}}...{{/if}}

但是如果 Selected 是一个 getter 函数,你需要

{{if Basket.Selected()}}...{{/if}}

您还可以调用 helper 函数:

{{if ~testSelected(Basket)}}...{{/if}}