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

imported>Administrator
ページの作成:「Knockoutの'''text'''バインディングとは、パラメーターの値に応じて関連付けられたDOM要素内のテキストを書き換える。 通常...」
 
imported>Administrator
 
(同じ利用者による、間の10版が非表示)
1行目: 1行目:
[[Knockout]]の'''text'''バインディングとは、パラメーターの値に応じて関連付けられたDOM要素内のテキストを書き換える。
[[Knockout.js]]の'''textバインディング'''とは、パラメーターの値に応じ、関連付けられた[[DOM]]要素内のテキストを書き換える[[Knockout.js/可視バインディング|可視バインディング]]のひとつである。


通常はspanやemといった要素の内容を書き換えるのに使うものだが、技術的には任意の要素で使用できる。
textバインディングは、通常spanタグやemタグといった要素の内容を書き換えるのに使うものだが、技術的には任意のあらゆる要素で使用できる。
 
textバインディングで書き換えられた文字列はすべては強制的にプレーンテキストとなる。
プレーンテキストではなくHTMLで書き換えたい場合には[[Knockout.js/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()メソッドを実行した結果でテキストを上書きする。
12行目: 16行目:
== 使用例 ==
== 使用例 ==
=== hello world ===
=== hello world ===
[[hello, world]]」はこんな感じ。
textバインディングを使用した「[[hello, world]]」はこんな感じ。
<source lang="html5">
<source lang="html5">
<!DOCTYPE html>
<!DOCTYPE html>
24行目: 28行目:
   <script type="text/javascript">
   <script type="text/javascript">
     jQuery(function() {
     jQuery(function() {
       // モデル
       // ビューモデル
       var AppViewModel = function() {
       var AppViewModel = function() {
         this.message = ko.observable("hello, world");
         this.message = ko.observable("hello, world");
41行目: 45行目:


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


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


[[3項演算子]]の使用例。
[[3項演算子]]の使用例。
76行目: 80行目:


== 関連項目 ==
== 関連項目 ==
* [[Knockout]]
* [[Knockout.js]]
** [[Knockout.js/可視バインディング|可視バインディング]]
** [[Knockout.js/制御フローバインディング|制御フローバインディング]]
 
== 参考文献 ==
== 参考文献 ==
<references/>
<references/>