Knockoutを使うようになったので、覚書を記載しておきます。
今回は基本である text , html バインディング と 属性をバインドする attr バインディング, style と class を設定する style, css バインディングの簡単なサンプルを記載します。
動作を確認した KnockoutJS のバージョンは次の通りです
- KnockoutJS のバージョン 3.3
1. text と html バインディング
ViewModel の プロパティやメソッドにバインドする場合、 text や html バインディングを使用するのが基本です. text バインディングの場合は < > などエスケープが必要な文字は自動的に html エンコードされてバインドされます。htmlバインディングの場合はバインドする文字列に マークアップが含まれていてもそのままマークアップとしてバインドされます。
簡単なサンプルコードは次の通りです。 textやhtmlバインディングでは ViewModelのプロパティやメソッドにバインドできます。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>KnockoutJS の簡単なバインディングのサンプル</title>
</head>
<body>
<!-- text バインディング -->
<h1><span data-bind="text: name"></span>さん</h1>
<!-- html バインディング-->
<p data-bind="html: getName()"></p>
<script type="text/javascript" src="/Scripts/knockout-3.3.0.js"></script>
<script type="text/javascript">
function viewModel(name) {
var self = this;
self.name = name;
self.getName = function () {
return "こんにちは <em>" + self.name + "</em>さん<br/> よろしくお願いします。";
}
}
var vm = new viewModel("KO 太郎");
ko.applyBindings(vm)
</script>
</body>
</html>
2. attr , css , style バインディング
HTMLの要素(ノード)の属性をバインドする場合は attr バインディングを使用します。 スタイルシートのクラスを指定する場合は css バインディングを使用します。 style 属性にバインドする場合は style バインディングを使用します。下のサンプルのstyleバインディングの例のように ''シングルクォーテーションで文字列を指定することで、ビューモデルのプロパティではなく、値を直接バインドすることもできます。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style type="text/css">
.sample{
background-color:yellow;
}
</style>
</head>
<body>
<div data-bind="style:{ margin: '10px' }">
<a data-bind="attr:{id: id, href : url}, css: css"><span data-bind="text: text"></span></a>
</div>
<script type="text/javascript" src="/Scripts/knockout-3.3.0.js"></script>
<script type="text/javascript">
function viewModel(name) {
var self = this;
self.id = "1234567";
self.url = "https://www.bing.com/";
self.text = "Bing";
self.css = "sample";
}
var vm = new viewModel();
ko.applyBindings(vm)
</script>
</body>
</html>
まとめ
簡単ですが説明は以上です。
次の章では ループ処理や条件を使用する方法を取り扱います。