获取无线电的文本值,而不是使用ko.js中的实际值
Getting text value of radio instead with the actual value in ko.js
我有一个ko.js应用程序,我偶然发现了一些麻烦。通过选中绑定使所选无线电的值可观察很简单,但是如何获取以下元素的文本呢?这就是我要说的。
<input type="radio" value="323" data-bind="checked: foodId">
<span data-bind="text:foodName"></span>
所以我需要从跨度中获取条目的名称,而不是它的实际 ID。这是用户做出选择后最终需要的内容。
<p>you have selected hamburger</p>
但是使用 ko.js似乎只能获得无线电的值,但显示您选择"323"的消息不是我需要的。我认为 jquery 可能会有所帮助,但我听说不建议将 jquery 事件侦听器与 ko.js 一起使用。
编辑:数据看起来像这样,
var viewModel = function(){
this.food = ko.observableArray([{foodId: 323, foodName:'hamburger'},
{foodId: 339, foodName:'pizza'}]
}
在 HTML 中,我使用 foreach 绑定来显示所有条目。很抱歉我无法复制完整的代码,我在移动设备上,目前没有来源。
你能帮我吗?
您需要添加一些内容来保存视图模型中的选定值。然后调用类似于我添加的 selectedFoodName
函数的函数,以获取当前所选食物的名称。
// untested but should help you get the idea
var viewModel = function() {
var self = this;
self.selectedFoodId = ko.observable();
self.food = ko.observableArray([{foodId: 323, foodName:'hamburger'},
{foodId: 339, foodName:'pizza'}]);
self.selectedFoodName = ko.computed(function() {
var food = self.food();
var selectedFoodId = self.selectedFoodId();
for (var i = 0, len = food.length; i < len; i++) {
if (food[i].foodId === selectedFoodId) {
return food[i].foodName;
}
}
return "None";
}, self);
};
然后在您的 html 中:
<div data-bind="foreach: food">
<input type="radio" data-bind="value: foodId, checked: selectedFoodId" />
<span data-bind="text: foodName"></span>
</div>
<div>Your selected food is: <span data-bind="text: selectedFoodName"></span></div>
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 强制模板刷新ember.js
- 如何编写HTML输入的JS内联
- Angular JS IE9 Hashbang url rewriting
- 从对象内部调用knockout.js ko.applyBindings()
- 淘汰赛JS;绑定值未更新或 ko.computed() 未更新
- 在ko.applyBindings(..)中执行Knockout js订阅函数(用于可观察对象)
- Knockout JS值不显示/绑定/更新,但可通过ko.toJS($data).value获得
- 表数据未使用 KO.js MVC 显示为 HTML
- 获取无线电的文本值,而不是使用ko.js中的实际值
- 分组结果为 KO.js foreach 绑定
- KO/JS:通过只推送新值并保留现有值来刷新数组
- Knockout.js"<!--ko if:-->"导致分离DOM元素的块
- Knockout.js在ko.observable()写入前修改值
- Ko.js在一个页面中两次
- 从JS中删除ko.mappings.fromJS不起作用
- 在knockout js数组中搜索元素,而不是ko.utils.arrayFirst