gpt4 book ai didi

javascript - 无法使用 knockout.js 从下拉列表中更新模型

转载 作者:行者123 更新时间:2023-11-30 18:22:21 24 4
gpt4 key购买 nike

我这里有这个示例 fiddle - http://jsfiddle.net/pRteA/3/

问题是我必须在一个范围内的下拉列表中显示所选对象的“名称”。我有些无法仅对 SelectedUser 对象执行此操作。我感觉这跟被链接到select html标签有关系。

但是,我仍然可以毫无问题地更新 user.place 对象。我找不到这 2 个对象的初始化方式有任何重大差异。

另外,请注意 sampleUsers 列表实际上每次都作为 Ajax 请求从服务器发出,这就是我使用此处描述的方法的原因 - How to use knockout mapping?

JS:

    var sampleUsers = [{
Name: 'a',
Id: 1},
{
Name: 'b',
Id: 2},
{
Name: 'c',
Id: 3},
{
Name: 'd',
Id: 4},
{
Name: 'e',
Id: 5}];

var userViewModel = {
user: ko.mapping.fromJS({
place: {
country: undefined,
continent: undefined
},
selectedUser: {
Name: undefined,
Id: undefined
}

}),
userOptions: ko.mapping.fromJS([])

}

ko.applyBindings(userViewModel);
ko.mapping.fromJS(sampleUsers, userViewModel.userOptions);​

HTML:

<div>
<select data-bind="options: userOptions, optionsText: 'Name', value: user.selectedUser" class="grey-border">
</select>
</div>Update

<div>
<span>Country</span>
<input type='text' data-bind="value:user.place.country" />
<span data-bind='text:user.place.country'/>
</div>

<div>
<span>Continent</span>
<input type='text' data-bind="value:user.place.continent" />
<span data-bind='text:user.place.continent'/>
</div>

最佳答案

您有几个语法错误,并且不正确地调用了映射插件。我真的认为你可能想通过 tutorials再次。

这是您的 fixed fiddle .

  1. 您在绑定(bind)后修改 userOptions“数组”,这意味着在绑定(bind)时它没有任何属性。
  2. 然后,绑定(bind)后,属性将不会被订阅,因为您更改了对象的结构。
  3. 您的跨度绑定(bind)路径不包括指定可观察对象所需的 ()
  4. 您的 selectedUser 的属性声明为内联,但仍通过映射插件构建。这有点浪费。轻微的提示。

关于javascript - 无法使用 knockout.js 从下拉列表中更新模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11749413/

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