我已经查看了其他问题,但无法让我的选择框正常工作:绑定下拉(选择)列表的初始/默认值
我有以下游戏对象:
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 是一个对象Name
and SportTypeId
.
我有以下模板:
<td rowspan="3"><select data-bind="options: AvailableSportTypes, value: SportType, optionsText:'Name', optionsCaption: 'Choose...'" class="sportType"></select></td>
AvailableSportTypes
是一个列表SportType
.
该列表在下拉列表中包含运动类型的名称,但我无法将初始选择设为SportType
。我写sportTypeFunction
向自己表明数据输入正确,并且它会选择正确的值,但更改下拉列表中的选择不会更新 SportType。
我确信我做错了什么。有人看到吗?
Thanks
When game.SportType
被传入,它需要是对 an item 的引用game.AvailableSportTypes
而不仅仅是看起来相同的物体。
基本上两个对象不相等,除非它们实际上是对同一对象的引用。
var a = { name: "test" },
b = { name: "test" };
alert(a === b); //false
因此,您需要调用函数来在数组中找到正确的对象并将其设置为可观察值的值。
并不是说它更好,但在 KO 1.3 中你可以扩展.fn
observables、observableArrays 和 dependentObservables 来添加附加功能。
这是一个示例:http://jsfiddle.net/rniemeyer/ZP79w
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)