1

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のバグですか?または私は何かが欠けていますか?

4

2 に答える 2

1

剣道のバグのようです。新しいリリース(バージョンv2012.3.1315)では、私のコードは期待どおりに機能します。(以前のバージョンを使用していました:2012.3.1114)

于 2013-02-08T17:07:01.043 に答える
0

ドロップダウンリストは、選択したインデックスを維持していると思います。したがって、ドロップダウンが最初に入力されると、ボックス3はブドウに設定されます。これは果物のリストのインデックス0です。ドロップダウン2が変更されると、オレンジはドロップダウン3のリストのインデックス0になります。つまり、実際に選択されたオブジェクトではなく、常にselctedIndex値によって更新されていると思います。

それは私の推測ですが、ソースコードを調べてそれが正しいかどうかを確認していません。

于 2013-02-06T15:04:49.557 に答える