私はknockout.jsを初めて使用しますが、ここでは簡単なものが欠けていると確信しています。リストにオブジェクトのリストがあり、そのうちの1つを選択してプロパティを取得し、さらにデータをロードしたいと考えています。
JS:
function category(data) {
this.categoryName = ko.observable(data.CategoryName);
this.categoryID = ko.observable(data.CategoryID);
}
function CatalogViewModel() {
//Data
var self = this;
self.categories = ko.observableArray([]);
self.chosenCategoryID = ko.observable();
//Behaviours
self.gotoCategory= function (category) {
self.chosenCategoryID(category.categoryID);
alert(category.categoryID);
};
$.getJSON("/api/catalog", function (allData) {
var mapped = $.map(allData, function (item) { return new category(item) });
self.categories(mapped);
});
}
ko.applyBindings(new CatalogViewModel());
これが私のHTMLです:
<ul data-bind="foreach: categories">
<li>
<a data-bind="click: $parent.gotoCategory"><label data-bind="text: $data.categoryName"></label></a>
</li>
</ul>
アイテムは完全にリストされていますが、アイテムをクリックすると、categoryIDを取得したいと思っていますが、代わりに、評価と引数を試行する関数のように見える一連のjavascriptを取得します。
ここで何が欠けていますか?
編集-これが私のアラートで取得するものです:
function c(){if(0<arguments.length){if(!c.equalityComparer||!c.equalityComparer(d,arguments[0]))c.I(),d=arguments[0],c.H();return this}a.U.La(c);return d}function c(){if(0<arguments.length){if(!c.equalityComparer||!c.equalityComparer(d,arguments[0]))c.I(),d=arguments[0],c.H();return this}a.U.La(c);return d}