gpt4 book ai didi

javascript - 将单选按钮绑定(bind)到对象数组

转载 作者:行者123 更新时间:2023-11-30 12:44:09 25 4
gpt4 key购买 nike

我有我的 View 模型:

function (dataservice, Person){
var genders = ko.observableArray();
var languages = ko.observableArray();
var person = ko.observableArray();

function activate(){
dataservice.getGenders(genders);
dataservice.getGenders(languages);
}

var vm = {
genders: genders,
languages: languages,
person: person
};
}

function Person(person){
var firtstName = person.firtstName;
var familyName = person.familyName;
var genderId = person.genderId;
var languageId = person.languageId;
}

为清楚起见,它已被简化。

然后我从服务器获得了我的“性别”数据,它看起来像这样:

[{
$id: "1",
GenderId: 2,
GenderName: "Female",
GenderDescription: "Female",
GenderCode: "F"
}]

我还有如下所示的Languages:

[{
"$id": "1",
"LanguageId": 2,
"LanguageName": "Afar",
"LanguageDescription": "Afar",
"LanguageCode": "aa"
}]

我想要实现的是将 View 模型中的 genders 数组绑定(bind)为数据源,并使用 Person.GenderId 作为要更新的值,在一种方式,以便最初选择正确的单选按钮。此选择取决于 Person.GenderId

我使用下拉菜单对 Languages 做了类似的事情,效果很好:

<section data-bind="with: $root.personModel">
<select id="language"
data-bind="options: $root.languages,
optionsText: 'LanguageName',
optionsValue: 'LanguageId',
value: LanguageId,
optionsCaption: 'none'">
</select>
</section>

现在我想用单选按钮做同样的事情,但我不知道如何让它工作。这是我拥有的:

<section data-bind="with: $root.personModel">
<!-- ko foreach: $root.genders -->
<input type="radio"
name="genders"
data-bind="attr: {value: GenderId}, checked: GenderId" />
<span data-bind="text: $data.GenderName"></span>
<!-- /ko -->
</section>

如果我理解正确,foreach 绑定(bind)就像 with 一样工作并改变我的上下文,所以我无法从我的暴露的

最佳答案

改变

<input type="radio" name="genders" data-bind="attr: {value: GenderId}, checked: GenderId" />

<input type="radio" name="genders" data-bind="attr: {value: GenderId}, checked: $parent.GenderId" />

解释为 here

$parent:这是父上下文中的 View 模型对象,即当前上下文之外的对象。在根上下文中,这是未定义的。

关于javascript - 将单选按钮绑定(bind)到对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23212294/

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