首页 > 解决方案 > 如何使用 jsRender 测试对象列表中的值

问题描述

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

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

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

{{if Basket.length }}

如果我在篮子里,它将返回真或假。

我正在尝试做并且需要一些帮助的是在我的 BasketOptions 对象上我有一个布尔“已选择”标志。我需要能够测试任何选定的标志是否为真。任何人都可以提供或指出如何做到这一点的一个很好的例子。我假设我需要调用一个 Javascript 函数,传递我的 Basket 对象并确定那里的值,但这就是我调用该 javascript 函数并返回值以供 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>

标签: javascriptjsrender

解决方案


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

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

或者

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

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

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

您还可以调用辅助函数:

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

推荐阅读