更新挖空中可观察数组中项目的属性
Updating properties of an item within an observable array in Knockout
我正在尝试在 Knockout 中实现可观察数组的可更新"选定项",以便对选定项属性的更改传播回列表。
在下面的示例中,我的模型包含可观察数组中的用户列表,每个用户都有一个可观察的"name"属性。该模型还具有一个 selectedUser
属性,该属性引用列表中的用户。
我有一个绑定到所选用户的name()
值的输入控件。我希望能够在输入中更改名称,并看到该更改传播到下面的列表。
.JS:
var UserModel = function() {
this.users = ko.observableArray([
{id:1, name:ko.observable('Bob')},
{id:2, name:ko.observable('Jane')}
]);
this.selectedUser = ko.observable(this.users()[0]);
console.log(this.users()[0].name());
}
ko.applyBindings(UserModel);
.HTML:
<input type="text" data-bind="value: selectedUser().name()" value="">
<table data-bind="foreach: users()">
<tr >
<td data-bind="text: $data.name()"> </td>
</tr>
</table>
小提琴:http://jsfiddle.net/5t5k2/5/
你快到了。
唯一的问题是您将输入字段绑定到可观察量的调用,而不是函数本身。
当你做.name()
你正在调用可观察量,所以你会得到一个字符串。相反,绑定到可观察量本身。
改变:
<input type="text" data-bind="value: selectedUser().name()" value="">
自
<input type="text" data-bind="value: selectedUser().name" value="">
( 小提琴 )
如果你想要那种即时的感觉,你可以告诉它更新在按下键时,而不仅仅是在更改事件上更新(在选项卡上触发或失去焦点时触发)
<input type="text" data-bind="value: selectedUser().name, valueUpdate: 'keyup'" value="">
( 小提琴 )
相关文章:
- 为什么我的jQuery .每次迭代都无法使用每个项目的属性
- 在 JavaScript 对象中添加子对象时获取“无法设置未定义的属性'项目'”
- 更新挖空中可观察数组中项目的属性
- Metro Javascript.对项目进行分组时出错.ui.js firstItemIndexHint 属性
- 克隆项目时,是否可以更改所有输入属性和 ID,如下所示;
- 使用 javascript 为每个项目设置属性
- 按数据属性查找和删除项目
- 是否可以在视口中的项目属性中使用循环
- 使用 jQuery 显示所有具有空属性的项目
- addClass/removeClass 基于所选项目数据属性
- 使用Javascript检查项目'的属性
- Angular:如何根据项目的属性显示icon.png
- 有没有一种方法可以根据包含整数的最接近属性来确定项目的目标
- 属性将应用于所有项目,而不仅仅是当前项目
- 如何从Google Apps脚本项目属性中存储和检索对象
- 如果至少有一个选定项目具有自定义属性,如何隐藏HTML5分隔符
- Netbeans-项目属性中缺少调试部分=>无法调试JavaScript
- 使用Jquery点击项目属性
- Sharepoint 2013 CSOM从自定义列表视图中获取项目属性
- Shopify行项目属性图片通过Ajax上传