「Knockout.js/textバインディング」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
imported>Administrator
1行目: 1行目:
[[Knockout]]の'''textバインディング'''とは、パラメーターの値に応じ、関連付けられた[[DOM]]要素内のテキストを書き換える[[Knockout/可視バインディング|可視バインディング]]のひとつである。
+
[[Knockout.js]]の'''textバインディング'''とは、パラメーターの値に応じ、関連付けられた[[DOM]]要素内のテキストを書き換える[[Knockout.js/可視バインディング|可視バインディング]]のひとつである。
  
 
textバインディングは、通常spanタグやemタグといった要素の内容を書き換えるのに使うものだが、技術的には任意のあらゆる要素で使用できる。
 
textバインディングは、通常spanタグやemタグといった要素の内容を書き換えるのに使うものだが、技術的には任意のあらゆる要素で使用できる。
  
 
textバインディングで書き換えられた文字列はすべては強制的にプレーンテキストとなる。
 
textバインディングで書き換えられた文字列はすべては強制的にプレーンテキストとなる。
プレーンテキストではなくHTMLで書き換えたい場合には[[Knockout/htmlバインディング|htmlバインディング]]を使用する。
+
プレーンテキストではなくHTMLで書き換えたい場合には[[Knockout.js/htmlバインディング|htmlバインディング]]を使用する。
ただし[[Knockout/htmlバインディング|htmlバインディング]]は使い方を一歩間違うと[[スクリプトインジェクション]]攻撃を受ける危険性が高いので素人にはおすすめできない。
+
ただし[[Knockout.js/htmlバインディング|htmlバインディング]]は使い方を一歩間違うと[[スクリプトインジェクション]]攻撃を受ける危険性が高いので素人にはおすすめできない。
  
 
== パラメーター ==
 
== パラメーター ==
[[Knockout]]は、関連付られたDOM要素内のテキスト([[IE]]であればinnerTextプロパティ、[[Firefox]]であればtextCotnentプロパティの値)を、パラメーターの値で上書きする。
+
[[Knockout.js]]は、関連付られたDOM要素内のテキスト([[IE]]であればinnerTextプロパティ、[[Firefox]]であればtextCotnentプロパティの値)を、パラメーターの値で上書きする。
  
このパラメーターが[[Knockout/observable]]の場合は、値を更新するたびにテキストも更新する。パラメーターがobservableでない場合はバインディング適用時(Knockout/applyBindings実行時)に1回だけ更新されて以降は更新されない。
+
このパラメーターが[[Knockout.js/observableオブジェクト|observableオブジェクト]]の場合は、値を更新するたびにテキストも更新する。パラメーターが[[Knockout.js/observableオブジェクト|observableオブジェクト]]でない場合はバインディング適用時([[Knockout/applyBindings関数|applyBindings関数]]実行時)に1回だけ更新されて以降は更新されない。
  
 
パラメーターの値の[[型]]が数値(number型)または文字列(string型)の場合はそのものを、それ以外の場合はtoString()メソッドを実行した結果でテキストを上書きする。
 
パラメーターの値の[[型]]が数値(number型)または文字列(string型)の場合はそのものを、それ以外の場合はtoString()メソッドを実行した結果でテキストを上書きする。
16行目: 16行目:
 
== 使用例 ==
 
== 使用例 ==
 
=== hello world ===
 
=== hello world ===
[[hello, world]]」はこんな感じ。
+
textバインディングを使用した「[[hello, world]]」はこんな感じ。
 
<source lang="html5">
 
<source lang="html5">
 
<!DOCTYPE html>
 
<!DOCTYPE html>
45行目: 45行目:
  
 
=== HTMLの使用 ===
 
=== HTMLの使用 ===
textバインディングのパラメーターに[[HTML]]を書いてもそのままの文字列として表示される(HTMLエスケープされた文字列が表示される)。HTMLで上書きしたい場合は[[Knockout/htmlバインディング|htmlバインディング]]を使用する。
+
textバインディングのパラメーターに[[HTML]]を書いてもそのままの文字列として表示される(HTMLエスケープされた文字列が表示される)。HTMLで上書きしたい場合は[[Knockout.js/htmlバインディング|htmlバインディング]]を使用する。
  
 
=== 式の使用 ===
 
=== 式の使用 ===
 
textバインディングには簡単な式が使える。
 
textバインディングには簡単な式が使える。
式に関する詳細は[[Knockout]]の項目を参照。
+
式に関する詳細は[[Knockout.js]]の項目を参照。
  
 
[[3項演算子]]の使用例。
 
[[3項演算子]]の使用例。
80行目: 80行目:
  
 
== 関連項目 ==
 
== 関連項目 ==
* [[Knockout]]
+
* [[Knockout.js]]
** [[Knockout/可視バインディング|可視バインディング]]
+
** [[Knockout.js/可視バインディング|可視バインディング]]
 +
** [[Knockout.js/制御フローバインディング|制御フローバインディング]]
  
 
== 参考文献 ==
 
== 参考文献 ==

2012年4月11日 (水) 16:18時点における版

Knockout.jstextバインディングとは、パラメーターの値に応じ、関連付けられたDOM要素内のテキストを書き換える可視バインディングのひとつである。

textバインディングは、通常spanタグやemタグといった要素の内容を書き換えるのに使うものだが、技術的には任意のあらゆる要素で使用できる。

textバインディングで書き換えられた文字列はすべては強制的にプレーンテキストとなる。 プレーンテキストではなくHTMLで書き換えたい場合にはhtmlバインディングを使用する。 ただしhtmlバインディングは使い方を一歩間違うとスクリプトインジェクション攻撃を受ける危険性が高いので素人にはおすすめできない。

パラメーター

Knockout.jsは、関連付られたDOM要素内のテキスト(IEであればinnerTextプロパティ、FirefoxであればtextCotnentプロパティの値)を、パラメーターの値で上書きする。

このパラメーターがobservableオブジェクトの場合は、値を更新するたびにテキストも更新する。パラメーターがobservableオブジェクトでない場合はバインディング適用時(applyBindings関数実行時)に1回だけ更新されて以降は更新されない。

パラメーターの値のが数値(number型)または文字列(string型)の場合はそのものを、それ以外の場合はtoString()メソッドを実行した結果でテキストを上書きする。

使用例

hello world

textバインディングを使用した「hello, world」はこんな感じ。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>knockout.js - text 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.message = ko.observable("hello, world");
      }
      // バインディング適用
      ko.applyBindings(new AppViewModel());
    });
  </script>
</head>
<body>

  <div data-bind="text: message"></div>

 </body>
</html>

HTMLの使用

textバインディングのパラメーターにHTMLを書いてもそのままの文字列として表示される(HTMLエスケープされた文字列が表示される)。HTMLで上書きしたい場合はhtmlバインディングを使用する。

式の使用

textバインディングには簡単な式が使える。 式に関する詳細はKnockout.jsの項目を参照。

3項演算子の使用例。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>knockout.js - text 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.price = ko.observable("19800");
      }
      // バインディング適用
      ko.applyBindings(new AppViewModel());
    });
  </script>
</head>
<body>
  <p><span data-bind="text: price"></span>円の商品について</p>
  <p>Aさんは <span data-bind="text: price() > 20000 ? '高い' : '安い'"></span> と言いました。</p>
  <p>Bさんは <span data-bind="text: price() > 10000 ? '高い' : '安い'"></span> と言いました。</p>
</body>
</html>

関連項目

参考文献

外部リンク