2 つの選択リストがあり、インデックスを同期したいので、最初のインデックスが 1 の場合、2 番目のインデックスは 1 などになります。
これは私のhtmlです。
<script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/2.2.0/knockout-min.js"></script>
<div>
<select id="selLight" data-bind="options: $root.ddlLight, value: ddlLightSelected"></select>
<select id="selAction" data-bind="options: $root.ddlAction, value: ddlActionSelected"></select>
</div>
そしてJavaScript...
var ViewModel = function() {
var self = this;
self.ddlLight = ko.observableArray(["RED", "AMBER", "GREEN"]);
self.ddlAction = ko.observableArray(["STOP", "READY", "GO"]);
self.ddlLightSelected = ko.observable();
self.ddlActionSelected = ko.observable();
self.ddlLightSelected.subscribe(function (event) {
document.getElementById("selAction").selectedIndex =
self.ddlLight.indexOf(self.ddlLightSelected());
});
self.ddlActionSelected.subscribe(function (event) {
document.getElementById("selLight").selectedIndex =
self.ddlAction.indexOf(self.ddlActionSelected());
});
};
ko.applyBindings(new ViewModel());
私は正確な問題をいじっています...
http://jsfiddle.net/phykell/2vUTw/
編集:私はjsfiddleでいくつかの問題を抱えていたので、ここにjsbinがあります... http://jsbin.com/ilomer/4/
...そして、問題を再現する方法は次のとおりです。
- jsFiddle を実行する
- LIGHTS から GREEN を選択します (ACTIONS は GO に変わります) 3. ACTIONS から STOP を選択します (LIGHTS は RED に変わるはずですが、変わりません)。