2

私の各要素には IsAnabled と IsDeafult があります。IsDefault = true の場合、チェックボックスを無効にする必要があります。

私がこのようにすると、「有効にする」ための反対の効果が欲しいことを除いて、うまくいきます:

<input type="checkbox" data-bind="checked: IsEnabled, enable: IsDefault" />

私が試してみました:

<input type="checkbox" data-bind="checked: IsEnabled, enable: !IsDefault" />
<input type="checkbox" data-bind="checked: IsEnabled, enable: IsDefault == 'false'" />
<input type="checkbox" data-bind="checked: IsEnabled, enable: IsDefault != 'true'" />
<input type="checkbox" data-bind="checked: IsEnabled, enable: IsDefault != true" />
<input type="checkbox" data-bind="checked: IsEnabled, enable: IsDefault == '0'" />

しかし、まだ運がありません...

4

1 に答える 1

11

次の記事を読むことをお勧めします: KnockoutJS について知っておくべき 10のこと 記事からの引用:

ほとんどのバインディングは、渡された値に対して ko.utils.unwrapObservable を呼び出します。これにより、オブザーバブルと非オブザーバブルの両方の値が安全に返されます。ただし、バインディングで式でオブザーバブルを使用する場合は、それを関数として参照する必要があります。同様に、コードでは通常、オブザーバブル自体 (値ではなく) を実際に渡したい場合を除き、オブザーバブルを関数として参照する必要があります。

したがって()、式でそれらを使用する場合は、observable に追加する必要があります。

<input type="checkbox" data-bind="checked: IsEnabled, enable: !IsDefault()" />
于 2012-10-31T14:03:39.280 に答える