gpt4 book ai didi

javascript - Knockout Js - 将单个项目从 json 数组绑定(bind)到元素

转载 作者:可可西里 更新时间:2023-11-01 02:57:33 26 4
gpt4 key购买 nike

我有以下包含元素数组的 View 模型

   function ReservationsViewModel() {
var self = this;


self.availableMeals = [
{ mealName: "Standard (sandwich)", price: 0, id = 1 },
{ mealName: "Premium (lobster)", price: 34.95, id = 2 },
{ mealName: "Ultimate (whole zebra)", price: 290, id = 3 }
];
}

我想将此 View 模型绑定(bind)到输入,但我只想绑定(bind)具有 id 值作为输入的 data-id 属性的单个数组元素膳食名称。

<input type="text" id="firstElementMealName" data-id="1" data-bind="value: ??"></input>

在这个例子中,我将绑定(bind) id = 1 的数组元素,文本将显示为“Standard (Sandwich)”,但我仍然需要完整的绑定(bind)和更改跟踪(observables)以及所有其他好东西 knockout 。

如何获取数据 ID 并在绑定(bind)代码中使用它来将适当的膳食绑定(bind)到输入?

提前致谢

最佳答案

建议的解决方案:

   function ReservationsViewModel() {
var self = this;


self.availableMeals = ko.observableArray([
{ mealName: "Standard (sandwich)", price: 0, id = 1 },
{ mealName: "Premium (lobster)", price: 34.95, id = 2 },
{ mealName: "Ultimate (whole zebra)", price: 290, id = 3 }
]);

self.getMealById = function(id) {
ko.utils.filterArray(self.availableMeals(), function(item) {
return item.id == id;
});
};
}

在 View 中:

<input type="text" id="firstElementMealName" data-bind="value: getMealById(1)"></input>

编辑:这是一个双向解决方案:

function ReservationsViewModel() {
var self = this;


self.availableMeals = ko.observable({
id_1: { mealName: "Standard (sandwich)", price: ko.observable(0) },
id_2: { mealName: "Premium (lobster)", price: ko.observable(34.95) },
id_3: { mealName: "Ultimate (whole zebra)", price: ko.observable(290) }
});
}

ko.applyBindings(new ReservationsViewModel());

在 View 中:

<input type="text" id="firstElementMealName" data-bind="value: availableMeals().id_2.price()"></input>

关于javascript - Knockout Js - 将单个项目从 json 数组绑定(bind)到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9104993/

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