Knockout Js-将json数组中的单个项绑定到元素
Knockout Js - Binding a single item from a json array to an element
我有下面的视图模型,它包含一个元素数组
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 }
];
}
我想将这个视图模型绑定到一个输入,但我只想绑定具有id值作为输入的数据id属性的单个数组元素餐名。
<input type="text" id="firstElementMealName" data-id="1" data-bind="value: ??"></input>
在这个例子中,我将绑定id=1的数组元素,文本将显示为"Standard(Sandwich)",但我仍然需要完整的绑定和更改跟踪(observables)以及Knockout中的所有其他好东西。
如何获取数据id并在绑定代码中使用它来将适当的膳食绑定到输入?
提前感谢
建议的解决方案:
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;
});
};
}
视图中:
<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());
视图中:
<input type="text" id="firstElementMealName" data-bind="value: availableMeals().id_2.price()"></input>
相关文章:
- 如何在没有jQuery的情况下模拟按名称命名的事件或解除单个事件的绑定
- 动态地向可观察数组中的特定项添加绑定(例如hasfocus)
- ES6/React第二项绑定失败
- 如何删除WinJS组绑定列表的最后一项
- Knockout.js用单个json对象绑定一个可观察对象
- 如果父项具有onclick绑定,则复选框单击将被忽略
- Knockout Js的自定义绑定处理程序更新依赖项
- jQuery绑定ajax:成功地不在rails3app中为新创建的(ajax)项工作
- 更改铁列表中现有项的绑定属性的值
- 绑定事件发射器上的单个事件
- 如何通过 KNOCKOUT 的自定义数据绑定使
- 的
- 项最初隐藏
- 挖空:数据绑定到 foreach 绑定中的单个文本框
- 将鼠标悬停事件绑定到 jQuery 自动完成项
- KnockoutJS与jQuery数据表和绑定插件,行单击传递整个数组而不是单个模型
- jQuery each - 绑定到所有元素而不是单个元素
- 使用Knockout.Js将数组绑定到表,并将数组的一个项绑定到另一个元素
- 如何将菜单项绑定到同一解决方案中的另一个项目
- Knockout Js-将json数组中的单个项绑定到元素
- 使用knockoutJS,如何将列表项绑定到同一个视图
- 为什么我不能在 Backbone 的视图事件中的一个语句中将单个事件绑定到多个选择器