私は多くのネストされたオブジェクトとネストされたオブジェクトのコレクションを持つKOモデルを持っています。 ko.mappings
マッピングオプションを使用して、モデル作成中に正しく生成されるようにしますが、値はクリアされます。メニューダウン簡単なドロップを開始し、それにオブジェクトをバインドしようとすると:ノックアウトマッピング:ネストしたオブジェクトから適用バインディングで値がクリアされるのはなぜですか?
<select id="myList" name="SelectedSurvey" id="SelectedSurvey" class="form-control"
data-bind="options: AvailableSurveys, optionsText: 'Name', value: SelectedSurvey,
optionsCaption: '-- Select Survey --'"></select>
次に、ページ上の新しいオブジェクトを作成する際に、いくつかのデータを取り、それが正常に動作しますが、から既存のレコードを編集しようとしたとき同じページでは、ドロップダウン値は決して選択されません。私がviewModel.SelectedSurvey() the value is undefined, but it only becomes undefined after I call
applyBindings()をチェックするとき。なぜこうなった?どうすれば修正できますか?ここで
は実施例である:http://jsfiddle.net/6wLcr52y/3/
コンソールを開いて、それを実行した場合、あなたはapplyBindings()
前にログがいっぱいViewModelに呼び出され、ネストされたオブジェクトSelectedSurvey()
が適切な値を持つオブジェクトをkomappingされ表示されますそれが呼び出された後です。 SelectedSurvey()
は未定義となり、そのように私のドロップダウンリストには決して選択された値がありません。
これは動作しますが、私はKO /作品をko.mappingどのようにしてはかなりイライラしています。最初に値を指定するかどうかにかかわらず、作成と編集の機能に違いがあります。私はいつでもネストされたオブジェクトまたはネストされたオブジェクトのコレクションが初期化しようとしているときにこの問題を抱えています。例えば、このフィドルをチェックしてください:http://jsfiddle.net/6wLcr52y/6/ subscribeメソッドでは、selectedSurveyはロード時に設定されませんが、ドロップダウンを変更して選択した場合はうまく動作し、全体を設定しますオブジェクト。 – SventoryMang
マッピングプラグインを使用するかどうかを明確にする必要があると思います。プレーンオブザーバブルとko.mapping.fromJSの両方を使用するためです。私はその部分が私を台無しにしていると思う。私の通常の経験では、ネストされたオブジェクトを使用して、サブスクライブするメソッドをそれらに追加するとき、レコードを編集するとき、 "SelectedSurveyは関数ではありません"というエラーメッセージが表示されます。ネストされたオブジェクトがオリジナルのフィドルのようにあまりにも購読された場合。私は、マッピングプラグインがそれを十分にラップしていないため、すべてのプロパティがマッピングプロパティ(ko_mapping_プロパティを持つようにラップする)でなければならないと考えました。 – SventoryMang
マッピングプラグインを使用する必要があるのは、子プロパティをobservable自身にする必要があるときだけです。たとえば、調査の名前をオンザフライで更新する予定で、更新された名前をGUIに反映させるには、マッピングプラグインを使用してself.AvailableSurveysオブジェクトを生成する必要があります。私がself.SelectedIdプロパティのためにプレーンオブザーバブルを使用した理由は、Idフィールドにはobservablesに変換する子がないため、マッピングプラグインを使用するのは意味がないからです。 –