Knockout.js/styleバインディング

提供: MonoBook
< Knockout.js
2012年4月20日 (金) 08:11時点におけるimported>Administratorによる版 (→‎使用例)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

Knockout.jscssバインディングとは、パラメーターの値に応じ、関連付けられたDOM要素のstyle属性の個々のプロパティを追加または削除する可視バインディングのひとつである。

たとえば「負の値のときに文字列を赤くする」などという処理をstyleバインディングを使うことで簡潔明瞭に書ける。なお、変更したいstyle属性のプロパティが複数あるという場合には、CCSクラス単位で追加削除できるcssバインディングを使うとよい。

パラメーター

styleバインディングの基本的な書式は以下のとおりである。

<div data-bind="style: { CSSプロパティ名: 式 }">...</div>

styleバインディングはカンマ区切りで複数指定もできる。

<div data-bind="style: { CSSプロパティ名: 式, CSSプロパティ名: 式, ... }">...</div>

styleバインディングの記述例。

<div data-bind="style: { color: value() < 0 ? 'red' : 'black' }">...</div>

CSSプロパティ名について

「font-weight」や「text-decoration」などの一部のCSSプロパティ名は、JavaScriptの変数名の命名規則でハイフンを使えない関係で、「fontWeight」や「textDecoration」などのようにキャメルケースで置き換える必要があるがあることに注意すること。

式について

式は三項演算子が一般的だが、あくまでJavaScriptのコードとして認識されるため三項演算子ではなくてもよい。

使用例

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>knockout.js - html bindding sample 1</title>
  <script type="text/javascript" src="jquery-1.5.1.min.js"></script>
  <script type="text/javascript" src="knockout-2.0.0.js"></script>
  <script type="text/javascript">
    jQuery(function() {
      // ビューモデル
      var AppViewModel = function() {
        this.valueA = ko.observable(90);
        this.valueB = ko.observable(20);
      }
      // バインディング適用
      ko.applyBindings(new AppViewModel());
    });
  </script>
</head>
<body>
 
  <p data-bind="style: { color: valueA() < 30 ? 'red' : 'black' }">Aさん</p>
  <p data-bind="style: { color: valueB() < 30 ? 'red' : 'black' }">Bさん</p>
 
 </body>
</html>

関連項目

参考文献

外部リンク