我是 knockout.js 的新手,我敢肯定,我在这里遗漏了一些简单的东西。我在列表中有一个对象列表,我只想选择其中一个并从中获取一个属性以加载更多数据。
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}