論理条件で使用したい<template is="dom-if" if=...
があります。
私が試したバインディングはtruthyのようです:
<link href="https://polygit.org/components/polymer/polymer.html" rel="import">
<dom-module id="test-thing">
<template>
<template is="dom-if" if="{{title == 'foo'}}" restamp>
Title is <b>FOO</b>
</template>
<template is="dom-if" if="{{title}} == 'bar'" restamp>
Title is <b>BAR</b>
</template>
Actual: "{{title}}"
</template>
<script>
Polymer({
is: 'test-thing',
properties: {
title: {type: String,value:''}
}
});
</script>
</dom-module>
<div>
Title: foo<br>
<test-thing title="foo"></test-thing>
</div>
<div>
Title: bar<br>
<test-thing title="bar"></test-thing>
</div>
<div>
Title: abc<br>
<test-thing title="abc"></test-thing>
</div>
if
条件をdom-if
template
に適用する正しい方法は何ですか?
関数を定義する必要があります。
<template is="dom-if" if="[[_isEqualTo(title, 'Foo')]]">
そしてスクリプトで:
function _isEqualTo(title, string) {
return title == string;
}
プロパティtitle
が変更されるたびに、関数_isEqualTo
が呼び出されます。したがって、プロパティや何かを監視する必要はありません。
関数 _isEqualTo
は2つのパラメーターで呼び出されます。2番目のパラメーターは、いくつかの値と比較するプレーンストリングです。
バインディングで使用できる唯一のロジックはそうではありません。例えば:
<template is="dom-if" if="{{_isEqualTo(title, 'Foo')}}">
<template is="dom-if" if="{{!_isEqualTo(title, 'Foo')}}">
データがFooがブール値であるか、または "Foo":trueまたは "isFoo":trueの属性を持っている場合。その後、あなたはただ行うことができます:
<template is="dom-if" if="{{isFoo}}">
Foo
</template>