gpt4 book ai didi

knockout.js - 在 knockout.js 中单击时从数组传递对象

转载 作者:行者123 更新时间:2023-12-01 12:54:22 24 4
gpt4 key购买 nike

我是 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>

项目列表完美,但当我点击项目时,我希望获得我的类别 ID,但我得到的是一堆 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}

最佳答案

看来您的 categoryID 是可观察的。要访问可观察对象的值,您需要将其作为不带参数的函数来调用。

因此,您的 gotoCategory 应该看起来更像:

            self.gotoCategory= function (category) {
self.chosenCategoryID(category.categoryID());
alert(category.categoryID());
};

关于knockout.js - 在 knockout.js 中单击时从数组传递对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10618662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com