使用 JSrender将 DOM 级别 JS 对象传递给模板函数

pass a dom level js object to a template function using jsrender

本文关键字:函数 对象 JSrender DOM 级别 JS 使用      更新时间:2023-09-26

我只想将模板填充的javascript对象传递给帮助程序函数。我已经查看了有关将帮助程序对象传递给循环的对话,但没有找到任何直接解决以下示例的内容。

<script type="text/javascript">
    // an object set by the template
    var SomeObject = {};
    SomeObject.Id=6;
</script>
<script id = "SomeTemplate" type="text/html">
    <div id="somegroup_{{>Id}}" class="main">
        <img id="somegroup_img_{{>Id}}" class="mainImg" src="{{: ~fltrOAMnImgs_hlp(Images, SomeObject)}}"> 
    </div>
</script>

当前的上述代码不会将 SomeObject 传递给帮助程序函数。我如何使用新的 jsrender 库来做到这一点?

如果要在模板中提供对SomeObject的访问权限,则必须将该对象作为帮助程序传入。有一些不同的方法可以做到这一点,具体取决于你是希望它全局适用于所有模板,仅用于此模板,还是仅用于此 render() 调用。请参阅:注册帮助程序、转换器、标记下的 $.views.helpers() 主题...

例如,如果使用渲染调用将其传入,则名称为"myObject":

myTemplate.render(myData, {myObject: SomeObject});

然后你可以像~myObject那样引用它:

<img ... src="{{: ~fltrOAMnImgs_hlp(Images, ~myObject)}}">

另请参阅此相关答案:尝试使用 jsrender 在 for 循环中的数组上运行函数