【发布时间】:2013-08-30 01:05:57
【问题描述】:
我刚从剑道 UI 开始,马上就遇到了一个相当简单的问题。 所以我有
- 第一个选择元素,由“用户”对象数组组成。
- 使用用户名进行常规输入
- 包含用户角色的第二个选择
到目前为止我的代码:
HTML 标记:
<form id="change-user">
<select data-text-field="username" data-bind="source: userList, value: selectedUser">
</select>
<label>Username: <input data-bind="value: selectedUser.username"></label>
<label>Role:
<select data-text-field="name" data-value-field="id" data-bind="source: userRoles, value: selectedUser.role"></select>
</label>
</form>
Javascript:
var model = kendo.observable({
userList: [
{
id: 1,
username: 'user1',
role: 1
},
{
id: 2,
username: 'user2',
role: 2
},
{
id: 3,
username: 'user3',
role: 3
}
],
selectedUser: null,
userRoles: [
{
id: 1,
name: 'Admin'
},
{
id: 2,
name: 'User'
},
{
id: 3,
name: 'Moderator'
}
]
});
kendo.bind($('form#change-user'), model);
但这似乎不起作用。似乎属性 'selectedUser' 获取字符串值 'user1'、'user2' 等等,而不是成为 javascript 对象。
我知道我的问题的解决方案可能非常简单,但我想不通 - 剑道文档非常庞大,我不确定我应该搜索哪些关键字。
谢谢。
【问题讨论】:
-
那么,您希望第一个
<select/>的值是 User 对象本身,而不是其username属性? -
这不是你想要的吗? http://jsfiddle.net/PytHq/
-
@Brett 是的,我希望第一个选择的值是“用户”对象,因此在可观察的 selectedUser 中可以成为对象而不是字符串,以便第二个复选框可以修改“用户”对象。您提供的代码似乎并没有解决这个问题。
标签: data-binding mvvm kendo-ui