2017-05-07 7 views
1

私は、HTMLのテーブルには、ノックアウトで囲まれています:三式が正常に動作していないこと(例えば、テーブルの一部だけ)三項式が常に真 - NULLではない

<tbody> 
    <!-- ko foreach: users --> 
     <tr><td valign="top"><span data-bind="text: name ? name : '&nbsp;'"></span></td></tr> 
    <!-- /ko --> 
</tbody> 

問題はそれが、ありますnameのように常に動作しています。NULLではない場合でも、最初の部分は常に実行されます。

私は間違っていますか?

+2

はそれが三元表現ではなく、if文だことに留意すべきです。 – Carcigenicate

+2

セブン - コロンがありませんので、「 」 – RamblinRose

+1

@TJCrowderありがとうございました。私はそれを逃してしまったかもしれません。私はそれを受け入れることができる答えは? – user3378165

答えて

2

nameが観測可能な場合、それは決して偽ではありません。それをtext: name() ? name() : '&nbsp;'と呼ぶ必要があります。 KOは、式に含まれていない場合にのみ自動的に呼び出します。 nameが観測可能でない場合、バインディングは変更すると再評価されません。

JavaScript's curiously-powerful || operator *:text: name() || '&nbsp;'を使用して2回呼び出すことは避けてください。


* (それは私の貧血の小さなブログの記事です。)

+0

ありがとう!そうだった!素晴らしい説明とアイデアをありがとう! – user3378165

関連する問題