knockout.js
ノックアウトforeachのJSONバインディングの使用
サーチ…
ネストされたループの操作
ここではJSON構造体を使用します。
{
"employees": [
{
"firstName": "John",
"lastName": "Doe",
"skills": [
{
"name": "javascript",
"rating": 5
}
]
},
{
"firstName": "Anna",
"lastName": "Smith",
"skills": [
{
"name": "css",
"rating": 5
},
{
"name": "javascript",
"rating": 5
}
]
},
{
"firstName": "Peter",
"lastName": "Jones",
"skills": [
{
"name": "html",
"rating": 5
},
{
"name": "javascript",
"rating": 3
}
]
}
]
};
このjson構造体は変数に代入することも、任意のapiの応答とすることもできます。
このJSONでわかるように、外部ノードには従業員の情報を保持する従業員があり、従業員のスキルを示す内部ノードがあります。
ここではknockout foreachを使ってネストしたものを作成します。ここにhtmlがあります
<ul id="employee" data-bind="foreach: employee">
<li data-bind="text:firstName + ' ' + lastName">
</li>
<ul data-bind="foreach : skills">
<li data-bind="text: name">
</li>
<ul>
<li>
Rating : <!-- ko text: rating --><!-- /ko -->
</li>
</ul>
</ul>
</ul>
ここで上記のhtmlにはforeachループを保持する2つのリストがあります。外部ループは従業員であるJSON構造の外部ノードを保持します。インナーループは、各従業員のスキルを保持します。各ループの内部で、対応するノードのプロパティにアクセスできます。たとえば、外部からではなく、スキルループ内で名前と評価にアクセスすることができます。
以下はjavascriptコードです。
var employeeViewModel = function(){
var self = this;
self.employee = ko.observableArray(employees);//here we can assign json
}
var viewModel = new employeeViewModel();
ko.applyBindings(viewModel);
フォームのjavascriptのポイントはあまりないコードです。私たちはjsonをHtmlで使用されるobservablearrayに直接割り当てることができます。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow