Index.cshtmlファイル(ノックアウトサイトから)に次のものがあります。
<p>First name: <input data-bind="value: firstName" /></p>
<p>Last name: <input data-bind="value: lastName" /></p>
<h2>Hello, <span data-bind="text: fullName"> </span>!</h2>
<script type="text/javascript">
// Here's my data model
var ViewModel = function (first, last) {
this.firstName = ko.observable(first);
this.lastName = ko.observable(last);
this.fullName = ko.computed(function () {
// Knockout tracks dependencies automatically. It knows that fullName depends on firstName and lastName, because these get called when evaluating fullName.
return this.firstName() + " " + this.lastName();
}, this);
};
ko.applyBindings(new ViewModel("Planet", "Earth")); // This makes Knockout get to work
</script>
私のレイアウトには次の行があります:
@Scripts.Render("~/bundles/knockout")
bundlerconfigで正しく構成されているもの:
bundles.Add(new ScriptBundle("~/bundles/knockout").Include(
"~/Scripts/Libraries/knockout-2.2.1.js"));
Chromeはファイルを認識し、VSは私にインテリセンスを提供しているので、何が起こっているのかわかりません。ノックアウト機能はどれも機能していません。
私はこれをMVCの外で(html / cssを使用して)テストしましたが、正常に機能しました。何が起こっているのか分かりますか?
編集:バンドラーなしで直接参照を使用しようとしましたが、それでも機能しません:
<script type="text/javascript" src="~/Scripts/Libraries/knockout-2.2.1.js"></script>
Chromeからエラーが発生します:
Uncaught ReferenceError: ko is not defined