Knockout JSの学習過程です。私は、Knockout と Javascript に関する Pluralsight に関する John Papa のチュートリアルをいくつか読んでいます。
<div data-bind="text: people().length" class="label">
セクションは問題なく動作しているようです。 ただし、foreach バインディングには問題があるようです。
私が試したこととやったこと:
- Javascript コードと Markpup をチェックして、彼と比較しましたが、違いはありません。
- Chrome で開発者ツールのエラー コンソールを見てみました。エラーは発生しませんでした。
- 単純なテキスト プロパティをオブザーバブルにバインドすると機能します。
- ハードコードのobservableArrayをマークアップにバインドすると機能します。
JS
$(function () {
var Person = function (name) {
this.name = ko.observable(name);
};
var viewModel = (function () {
var p1 = new Person('Da Vinci');
var p2 = new Person('Michangelo');
var people = ko.observableArray([p1, p2]);
return {
people: people
};
})();
ko.applyBindings(viewModel);
});
HTML マークアップ
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Knockout</title>
<link href="../Content/bootstrap.css" rel="stylesheet" />
</head>
<body>
<h1>Hello Knockout!</h1>
<section>
Records:
<div data-bind="text: people().length" class="label">
<ul data-bind="foreach: people">
<li>
<span data-bind="text: name"></span>
</li>
</ul>
</div>
</section>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1.js"></script>
<script src="../Js/ViewModel/AuthorCart.js"></script>
</body>
</html>
次の結果が得られますが、2 人の名前 ('Da Vinci' と 'Michangelo') がレコードの下に表示されることを期待しています。
こんにちはノックアウト!
レコード: 2