テキストデータバインド式は、1つのプロパティのみを持つことができます。別のプロパティの数に応じて、テキストを複数形にするにはどうすればよいですか?knockoutjsを使用してテキストを複数形にする方法はありません
答えて
これを行うにはいくつかの方法があります。 http://jsfiddle.net/njj2P/2/ 私が示した最初のオプションは、ko.computedを使用して評価に基づいて名前を単数形または複数形に戻す必要があるかどうかを判断することです。
this.formattedName = ko.computed(function() {
return this.qty() > 1 ? this.name() + "s" : this.name();
}, this);
第2のオプションは、計算されたプロパティなしでこれを行う方法と、代わりに条件付きバインディングを使用する方法を示しています。
<span data-bind="if:qty()>1">s</span>
次のような再利用可能なカスタムバインディングを作成できます。
ko.bindingHandlers.pluralize = {
update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
function count(data) {
var value = ko.utils.unwrapObservable(data);
if (typeof value === "object" && value.length > 0) {
return value.length;
} else if (typeof value === "number") {
return value;
}
}
var settings = valueAccessor();
var text = count(settings.data) === 1 ? settings.singular : settings.plural;
$(element).text(ko.utils.unwrapObservable(text));
}
};
このように使用します。
<span data-bind="pluralize: { data:items, singular:'entry', plural:'entries' }"></span>
- オプションは、任意の配列または番号を指すことができます。
singular
オプションは、data
がplural
オプションは、そうでない場合に表示されるテキストを表し1- と評価された場合に表示するテキストを表します。
data
ここでの動作を参照してください。 http://fiddle.jshell.net/jessegavin/wamfw/
私はこの解決法を実際には本当に好きです。 – jaffa
偉大な答え!開発者が '' none '=>' No items '、' singular '=>' 1 item '、' 'item' 'などのオプションを得ることができるように' none 'オプションとバックカウントを 'count'に追加することをお勧めします。複数== "## items" –
良いアイデア。それがAngularと同じです。 – jessegavin
- 1. knockoutjs:イベントはありませんハンドラ
- 2. 純粋なjavascriptを使用してこのテキストを選択する方法、jqueryはありませんか?
- 3. KnockoutJSに弱い拘束力を持たせる方法はありますか
- 4. テキストはUTF8形式ではありませんが、どのようにstringWithContentOfFileを使用できますか
- 5. 複数のテキストビューで使用しているマーキーがありません
- 6. KnockoutJSを使用してiframeのコンテンツをデータバインドする方法はありますか?
- 7. BASHを使用して複数行の構成ファイルを作成し、複数行に変数を使用する方法はありますか?
- 8. コマンドライン引数を使用してWinFormsアプリケーションを自動化する最良の方法はありませんか?
- 9. ブートストラップを使用して複数の画像の周りにテキストを折り返す方法は?
- 10. anglejsで数値を複数形にしてフォーマットする方法
- 11. KnockoutJSでindexOfを使用する方法
- 12. 複数のコンピュータからLastPassを使用する方法はありますか?
- 13. 複数のモニタでPyCharmを使用する方法はありますか?
- 14. "saveContactTask"を使用せずに複数の連絡先を保存する方法はありますか?
- 15. Xcode 4にmainwindow.xibがありません。TabBarControllerにNavigationControllerを使用する方法が分かりません
- 16. パスカルの複数のボタンに対して1つの手順を使用する方法はありますか?
- 17. WPF StatusBarテキストを設定する簡単な方法はありませんか?
- 18. Windowsのコマンドプロンプトでstartコマンドを使用して複数のパラメータをプログラムに渡す方法はありますか?
- 19. WatiNを使用してフィールドIDに基づいてテキストをスクレイプする方法はありますか?
- 20. 'next'を使用してarivingするインスタンスがありません
- 21. 複数形とsingularize私の英語のため申し訳ありません
- 22. 使用方法:CSSのセレクタではありませんか?
- 23. Excel:複数のブックの数値形式にテキストを変換する方法
- 24. Microsoft.Office.Interop.Wordを使用して、ワードドキュメントの図形または図形のテキストを取得する方法
- 25. **同じ** sysdateを使用して複数のSQL文を実行する方法はありますか?
- 26. Zend_Dbを使用して複数のテーブルを結合する方法はありますか?
- 27. jQuery:配列セレクタを使用して複数の要素を選択する方法はありますか?
- 28. Atomで複数のバージョンのPythonを使用してPythonスクリプトを実行する方法はありますか?
- 29. データアダプタとデータセットを使用して複数のIDを照会する方法はありますか?
- 30. SSHを使用してリモートマシン上で複数のコマンドを発行する別の方法はありますか?
私は本当に "y"を "ies"や "x"を "ces"などにするクリーンな方法を探しています。この部分は簡単な部分です。私はとにかく反対票を出しましたが、それは私が欲しいものではありません。何か案は?そこに何か? – vbullinger
私はそれに2番目のオプションを使用していたので、この答えをアップvしました!0の値が0を示すように!=の代わりに!=を少し変更しました(つまり、Oサブアイテム、1サブアイテム、2サブアイテム) – MikeScott8
私は同意し、私のコードに同じ観察と変更を加えました。 – GenuineRex