有沒有辦法來縮短多個空格條件運算
{{#if arg1}}
{{#if arg2}}
//stuff
{{/if}}
{{/if}}
只是一個單一的,如果?
{{#if arg1 arg2}}
{{#if arg1 && arg2}}
以上兩者似乎都不起作用。
有沒有辦法來縮短多個空格條件運算
{{#if arg1}}
{{#if arg2}}
//stuff
{{/if}}
{{/if}}
只是一個單一的,如果?
{{#if arg1 arg2}}
{{#if arg1 && arg2}}
以上兩者似乎都不起作用。
Spacebars延續了Mustache和Handlebars爲無邏輯模板語言的理念。這就是爲什麼簡單的邏輯最好放置在控制器中而不是模板中的原因。
但是,您可以執行邏輯and
的define a custom block helper。
<template name="ifand">
{{#if arg1}}
{{#if arg2}}
{{> Template.contentBlock}}
{{else}}
{{> Template.elseBlock}}
{{/if}}
{{else}}
{{> Template.elseBlock}}
{{/if}}
</template>
電話爲:
您還可以瞭解more about passing variables into templates。
對於一般情況下(的參數任意數量之間and
),你要註冊一個全局模板幫手:
Template.registerHelper('and', function() {
var args = Array.prototype.slice.call(arguments, 0, -1); // exclude key=value args
var parameters = arguments[arguments.length - 1]; // key: value arguments
return _.every(args, function (arg) {
return !!arg;
});
});
電話爲:
{{#if and 1 "foo" 3 'bar' param="test"}}
True
{{else}}
False
{{/if}}
我知道如何將變量傳遞到模板中,這種方法令我擔憂的是它無法處理X參數。我需要許多不同的模板來執行基本相同的任務。能夠定義我自己的助手感覺就像是正確的路線,但我不明白如何將變量傳遞到助手的工作方式,除非它具有隻能處理單個變量的相同問題。 – Sinistralis 2014-11-04 21:38:43
您能不能在lib文件夾中成功定義模板?如果不是,放置全局模板幫助器定義的最佳位置在哪裏? – Sinistralis 2014-11-05 15:28:06
我會把它們放在'/ client/lib'中。應該在那裏定義「模板」。 – 2014-11-05 22:25:32
雖然在模板中,您可以使用這個對象來引用傳入的參數,這可以避免在我需要它們的大多數情況下使用多個#if參數。
Template.myTemplate.created = function() {
if(this.data.arg1 && this.data.arg2) {
//do JS setup here
}
}
此外,助手可以使用
Template.registerHelper('exists', function() {
if(this.data.arg1 && this.data.arg2) {
return true
}
}
指定你執行上面的助手這樣
{{#if exists}}
//stuff
{{/if}}
{{> myTemplate arg1 arg2}}
我只是在這個偶然的事故,但是這是一個巨大的發現對我來說。
我相信[UI.registerHelper已被棄用](https://github.com/meteor/meteor/issues/3017)。請檢查我更新的答案。 – 2014-11-04 23:15:09
我嘗試使用Template.registerHelper,並一直告訴我,模板是未定義的。這很奇怪。如果是這種情況,我需要弄清楚爲什麼它不適合我,並相應地更新。 – Sinistralis 2014-11-05 15:02:38
已更新此信息以反映您的信息,因此我不會傳播信息。儘管如此,請在我的回答中看到我的評論,因爲在lib定義期間UI存在,但Template沒有,我覺得像lib是我應該定義全局幫助者的地方。 – Sinistralis 2014-11-05 15:29:16
我發現我可以使用UI.registerHelper(),但是我不確定如何配置它以採取任何數量的爭論。 (數組似乎沒有工作,還沒有嘗試映射) – Sinistralis 2014-11-04 21:28:55