次のノックアウトjsコードがあります。問題は、selectedCountry 変数の値を設定できるようにしたいが、そのためには selectedCountry として select 要素にバインドする必要があることですが、初期値を取得するには、代わりにこの selectedCountry() を使用する必要があります。したがって、別のオプションが選択されたときに selectedCountry の値を更新できません。どうすればいいですか?
The code is also available here http://jsfiddle.net/xPc9J/
<!doctype html>
<html>
<head>
<script src="knockout-2.1.0.js" type="text/javascript"></script>
</head>
<body>
<p>
Your country:
<select data-bind="options: availableCountries, optionsValue: 'countryPopulation',optionsText: 'countryName',value: selectedCountry(), optionsCaption: 'Choose...'"></select>
</p>
<span data-bind="text: selectedCountry() ? selectedCountry().countryPopulation : 'unknown'"></span>.
<div data-bind="visible: selectedCountry"> <!-- Appears when you select something -->
You have chosen a country with population
<span data-bind="text: selectedCountry() ? selectedCountry().countryPopulation : 'unknown'"></span>.
</div>
<script type="text/javascript">
// Constructor for an object with two properties
var country = function(name, population) {
this.countryName = name;
this.countryPopulation = population;
};
var sel=new country("USA", 320000000);
console.log(sel);
var viewModel = {
availableCountries : ko.observableArray([
new country("UK", 65000000),
new country("USA", 320000000),
new country("Sweden", 29000000)
]),
selectedCountry : ko.observable(320000000) // Nothing selected by default
};
console.log(viewModel.selectedCountry());
//viewModel.selectedCountry(sel);
ko.applyBindings(viewModel);
</script>
</body>
</html>