gpt4 book ai didi

javascript - 如何在 jsview if 语句中使用转换器?

转载 作者:行者123 更新时间:2023-11-30 17:29:33 25 4
gpt4 key购买 nike

所以,我只是想在“if”语句中将 int 转换为 bool。我不确定如何实现这一目标。我正在玩的代码如下。

JsFiddle code here

HTML:

<div id="main-div"></div>

<script id="testTmpl" type="text/x-jsrender">
<input data-link="{:test:}" />
<div data-link="{intToBool:test:}"></div>

// testing different methods, none seem to work
{^{if intToBool:test }}
Woot! 1
{{/if}}
{^{if intToBool(test) }}
Woot! 2
{{/if}}
{^{if ~root.intToBool(test) }}
Woot! 3
{{/if}}
</script>

JavaScript:

 $.views.converters({
intToBool: function(val) {
if (val === 0 || val === false || val === '0' || val === 'false') {
return false;
} else {
return true;
}
}
});

function App(data) {
self = this;

self.test = 0;
};

var app = new App();

var testTmpl = $.templates("#testTmpl");
testTmpl.link("#main-div", app);

最佳答案

注册转换器仅用于 {{: ...}}标签 ( http://www.jsviews.com/#assigntag ) 的各种形式 {{cvt:expression}} {^{cvt:expression}} <div data-link="{cvt:expression}"><input data-link="{cvt:expression:cvtBack}" /> .参见 http://www.jsviews.com/#converters .

对于其他情况,您需要使用方法 {^{if someMethodOnMyModel(test)}}或助手 ( http://www.jsviews.com/#helpers ): {^{if ~someHelper(test)}} .

另见 http://www.jsviews.com/#samples/jsr/paths有关辅助路径的示例 - ~some.expression... - 辅助函数或辅助对象。注意 ~root是您传递给 render() 的顶级数据对象的内置辅助路径或 link() .

编辑: 事实上, JsRender 和 JsViews 中有一个鲜为人知的功能,可以让您将已注册的转换器与其他标签相关联。你可以写

{^{if test convert="intToBool" }}
Woot!
{{/if}}

但通常使用 ~intToBool(test) 可能更简单/更好- 更熟悉,在阅读模板时可能更容易理解。

顺便说一句 {{if test}}测试 'truthy' 所以 test不需要是 bool 类型。 OTOH 如果你想让“假”或“0”是假的,那么你确实需要一个助手/转换器。

关于javascript - 如何在 jsview if 语句中使用转换器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23432317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com