要素で使用しようとしていますがko.dataFor()
、select
ViewModel 全体を返しています。selected のオブジェクトを取得することを期待していますが、option
代わりに常に ViewModel を取得します。と を渡そうとしましselect
たoption
が、どちらの方法でも同じ結果が得られます。
<select id="companies" data-bind="options: companies, optionsText: 'name', optionsValue: 'id', optionsCaption: ' ' "></select>
<br/>
ko.DataFor(select)<br/>
<textarea id="a" cols="40" rows="10"></textarea>
<br/>
ko.DataFor(option)<br/>
<textarea id="b" cols="40" rows="10"></textarea>
<br/>
<div data-bind="text: ko.toJSON($root)"></div>
function MyViewModel() {
var self = this;
self.companies = ko.observableArray([{id:1, name: "Chevy"},{id:2, name: "Ford"}, {id:2, name: "Dodge"}]);
self.countries = ko.observableArray([{id:1, name: "USA"},{id:2, name: "Canada"}, {id:2, name: "Mexico"}]);
}
var vm = new MyViewModel();
ko.applyBindings(vm);
$("#companies").change(function(){
$("#a").val("dataFor("+this.id+"):"+ ko.toJSON(ko.dataFor(this)));
var selectedOption = $(this).find(":selected")[0];
$("#b").val("dataFor("+this.id+"):"+ ko.toJSON(ko.dataFor(selectedOption)));
});