私は、この他の質問を見てきましたが、正常に動作するように私の選択ボックスを取得することはできません:私は、次のゲームのオブジェクトを持っている Binding initial/default value of dropdown (select) listする方法でオプションを事前に選択し、ドロップダウンノックアウトJS
:
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
とSportTypeId
を持つオブジェクトです。
私は、次のテンプレートがあります。
<td rowspan="3"><select data-bind="options: AvailableSportTypes, value: SportType, optionsText:'Name', optionsCaption: 'Choose...'" class="sportType"></select></td>
AvailableSportTypes
はSportType
のリストです。
リストには、スポーツタイプの名前がドロップダウンリストに表示されますが、最初の選択をSportType
にすることはできません。私はsportTypeFunction
と書いて、データが正しく入っていることを示し、正しい値を選択しますが、ドロップダウンで自分の選択を変更してもSportTypeは更新されません。
私は何か間違っていると確信しています。誰でもそれを見ますか? game.SportType
が渡されます場合は
おかげで
は 'オブジェクトであることを仮定SportType'ですか?その場合、 'game.AvailableSportTypes'配列の項目への参照で渡される' game.SportType'ですか?基本的に2つのオブジェクトは、実際には同じオブジェクトへの参照でない限り等しくありません。 'var a = {name:" test "}、b = {name:" test "};警告(a === b); // false' –
優れた点。それはその行動を説明するでしょう。だから自分の比較演算子を書く必要がありますか?あるいは、プロトタイプ関数をどこかでオーバーロードできますか? –
@RP Niemeyer - 私は実際に私の初期値を設定するために再びsportTypeFunctionと呼ばれ、オプションを変更することを含め、すべてが機能します。私が前に間違っていたことを知りません。オブジェクトの平等問題を指摘してくれてありがとう。その周りの任意の巧妙な方法?私の機能はハッキリと感じます。 –