Привязка массивов

Последнее обновление: 17.05.2016

Параметр foreach позволяет привязать массив к элементу разметки html. Например, пусть ViewModel представляет массив:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Привязка в KnockoutJS</title>
</head>
<body>
<ul data-bind="foreach: phones">
	<li data-bind="text: $data"></li>
</ul>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/knockout/knockout-3.4.0.js"></script>
<script>
var viewModel ={
	phones:  ["iPhone 6S", "LG G5", "Lumia 950", "Nexus 6P"]
};
ko.applyBindings(viewModel);
</script>
</body>
</html>
foreach в Knockout

Следует отметить, что в данном случае привязка устанавливается как для элемента <ul>, так и для вложенного элемента <li>. Список ul использует привязку в стиле "foreach". То есть фактически в этом элементе в цикле foreach будут перебираться все элементы массива.

А каждый элемент списка <li> привязан к параметру $data, который указывает на текущий перебираемый объект.

Но рассмотрим чуть более сложный пример привязки массивов:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Привязка в KnockoutJS</title>
</head>
<body>
<ul data-bind="foreach: phones">
	<li>
		<p data-bind="text: name"></p>
		<p data-bind="text: company"></p>
	</li>
</ul>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/knockout/knockout-3.4.0.js"></script>
<script>
var viewModel ={
	phones:  [
		{ 
			name: "iPhone 6S",
			company: "Apple"
		},
		{
			name: "Lumia 950",
			company: "Microsoft"
		},
		{	name:"Nexus 6P",
			company: "Huawei"
		}]
};
ko.applyBindings(viewModel);
</script>
</body>
</html>
Привязка массивов в Knockout

В данном случае каждый элемент массива представляет сложный объект. При привязке этого массива элементе ul:

<ul data-bind="foreach: phones">

вложенные элементы li оказываются привязанными к отдельным объектам.

Поскольку текущий перебираемый объект можно получить через параметр $data, то мы также можем переписать привязку к элементу li следующим образом:

<li>
	<p data-bind="text: $data.name"></p>
	<p data-bind="text: $data.company"></p>
</li>
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850