jsFiddle: http://jsfiddle.net/wenbert/W2qLz/2/
selected_skill
配列の「初期データ」を提供したにもかかわらず$data
、選択ボックスの最初の項目になります。
var initialData = [
{
id: '1',
name: "Batman",
isDelete: false,
selected_skill: { <--- This part right here.
id: '2',
name: "Boxing",
isDeleted: false
},
skills: [
{
id: '1',
name: "Karate",
isDeleted: false},
{
id: '2',
name: "Boxing",
isDeleted: false
},
{
id: '6',
name: "Sonar",
isDeleted: false}
]},
{
id: '2',
name: "Hulk",
isDelete: false,
skills: [
{
id: '3',
name: "MMA",
isDeleted: false},
{
id: '4',
name: "Rage",
isDeleted: false},
{
id: '5',
name: "Extra Strength",
isDeleted: false}
]},
];
$data
下のスクリーンショットの部分を参照してください
提供されてinitial_data
いますが、すべてが「ロード」されると、選択ボックスの最初のオプションに基づいて $data が自動的に更新されます。
このように「選択したオプション」を設定するにはどうすればよいですか?
スクリーンショットでは、次のselected_skill
ようになっているはずです。
selected_skill: {
id: '2',
name: "Boxing",
isDeleted: false
}
jsFiddle: http://jsfiddle.net/wenbert/W2qLz/2/
アップデート:
私のinitialData
実際のアプリでは、 を使用してロードされ$.getJSON()
ます。私はこのようなものでそれを行います:
$.getJSON(appUrl+"/getstuff/hero.json",
function(data){
ko.applyBindings(new Hero(data));
}
);
Firebug コンソールの結果が「ボクシング」であることがわかりますObject { id="2", nameL: "Boxing", isDelete: false }
。しかし、すべてがレンダリングされると、これselected_skill
が最初のオプションになります。
これが理にかなっていることを願っています。そうでない場合は、コメントを通じて明確化にお答えいただければ幸いです。
最終更新
私が使用した:
return item.id() === data.selected_skill.id
それ以外の
return data.selected_skill && skill.id === data.selected_skill.id;
それからそれは働いた。
正解に印をつけました。