gpt4 book ai didi

data-binding - 如何在下拉 knockout js中预先选择一个选项

转载 作者:行者123 更新时间:2023-12-04 22:35:22 24 4
gpt4 key购买 nike

我看过另一个问题,但无法让我的选择框正常工作:
Binding initial/default value of dropdown (select) list

我有以下游戏对象:

function Game(visitingTeamDetails, homeTeamDetails, game) {
if (arguments.length > 0) {
this.VisitingTeamDetails = visitingTeamDetails;

this.HomeTeamDetails = homeTeamDetails;

this.GameId = ko.observable(game.GameId);
this.HomeTeamName = ko.observable(game.HomeTeamName);
this.VisitingTeamName = ko.observable(game.VisitingTeamName);
this.SportTypeName = ko.observable(game.SportTypeName);
this.HomeAccountName = ko.observable(game.HomeAccountName);
this.VisitingAccountName = ko.observable(game.VisitingAccountName);
this.GameDateString = ko.observable(game.GameDateString);
this.GameTimeString = ko.observable(game.GameTimeString);
this.AvailableSportTypes = ko.observableArray(game.Sports);

this.sportTypeFunction = function () {
for (sportType in this.AvailableSportTypes()) {
if (this.AvailableSportTypes()[sportType].Name == this.SportTypeName()) {
return this.AvailableSportTypes()[sportType];
}
}
return null;
};

this.SportType = ko.observable(game.SportType);
}
}

SportType 是一个带有 NameSportTypeId 的对象。

我有以下模板:
 <td rowspan="3"><select data-bind="options: AvailableSportTypes, value: SportType, optionsText:'Name', optionsCaption: 'Choose...'" class="sportType"></select></td>
AvailableSportTypesSportType 的列表。

该列表在下拉列表中带有 SportType 的名称,但我无法将初始选择设为 SportType 。我写了 sportTypeFunction 来显示数据正确输入,它会选择正确的值,但在下拉列表中更改我的选择不会更新 SportType。

我确定我做错了什么。有人看到吗?

谢谢

最佳答案

game.SportType 传入时,它需要是对 game.AvailableSportTypes 中项目的引用,而不仅仅是一个看起来相同的对象。

基本上两个对象是不相等的,除非它们实际上是对同一个对象的引用。

var a = { name: "test" },
b = { name: "test" };

alert(a === b); //false

因此,您需要调用函数来定位数组中的正确对象并将其设置为 observable 的值。

并不是说它更好,但在 KO 1.3 中,您可以扩展 observables、observableArrays 和dependentObservables 的 .fn 以添加其他功能。

这是一个示例: http://jsfiddle.net/rniemeyer/ZP79w

关于data-binding - 如何在下拉 knockout js中预先选择一个选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8449824/

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