kendo mvvmを使用して次の問題を解決しようとしています。3つのドロップダウンリストがあり、1つのドロップダウンで選択したオプションが他の2つに表示されないようにする必要があります。これは、3つのドロップダウンすべてに当てはまります。私は次のことをしました:
var viewModel = kendo.observable({
fruits: [
{Text:'apple', Value:1},
{Text:'orange', Value:2},
{Text:'grapes', Value:3},
{Text:'banana', Value:4},
{Text:'mango', Value:5},
{Text:'kiwi', Value:6}
],
fruits1: function(){
var self = this;
var sf2 = self.get('selectedFruit2').Value;
var sf3 = self.get('selectedFruit3').Value;
var fruits = _.filter(self.fruits, function(e){
return e.Value !== sf2 && e.Value !== sf3;
});
return fruits;
},
selectedFruit1 : null,
fruits2: function(){
var self = this;
var sf1 = self.get('selectedFruit1').Value;
var sf3 = self.get('selectedFruit3').Value;
var fruits = _.filter(self.fruits, function(e){
return e.Value !== sf1 && e.Value !== sf3;
});
return fruits;
},
selectedFruit2 : null,
fruits3: function(){
var self = this;
var sf1 = self.get('selectedFruit1').Value;
var sf2 = self.get('selectedFruit2').Value;
var fruits = _.filter(self.fruits, function(e){
return e.Value !== sf1 && e.Value !== sf2;
});
return fruits;
},
selectedFruit3 : null
});
viewModel.selectedFruit1 = viewModel.fruits[0];
viewModel.selectedFruit2 = viewModel.fruits[1];
viewModel.selectedFruit3 = viewModel.fruits[2];
kendo.bind($("form"), viewModel);
ドロップダウン1がfruits1をソースとして使用する場合、ドロップダウン2はfruits2を使用し、ドロップダウン3はfruits3を使用します。
それは機能しますが、ドロップダウンのオプションを変更し始めると、ドロップダウンの1つに表示される値が理由もなく変更されます。たとえば、最初のドロップダウンで「ブドウ」を選択してから、ドロップダウン2で再生を開始すると(マンゴー、アップル、マンゴーなどに変更)、ドロップダウン1の表示が「ブドウ」から別の値に変わります。 (ビューモデル「selectedFruit1」の値はまだ「ブドウ」ですが)。
このjsbinhttp : //jsbin.com/ebuhaq/1/editをHTMLを表示できる場所に設定しました。
だから私の質問は:なぜそれが起こるのですか?剣道mvvmのバグですか?または私は何かが欠けていますか?