【问题标题】:changing dropdownlist source misses selected value更改下拉列表源错过了选定的值
【发布时间】:2013-02-06 04:51:56
【问题描述】:

我正在尝试使用 kendo mvvm 来解决以下问题: 我有 3 个下拉列表,我需要在一个下拉列表中选择的选项不会出现在其他两个下拉列表中。这适用于所有 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。

它可以工作,但是如果您开始更改下拉菜单中的选项,那么其中一个下拉菜单中的显示值会无缘无故地发生变化。 例如,如果我在第一个下拉列表中选择“葡萄”,然后我开始使用下拉列表 2(将其更改为芒果,然后是苹果,然后是芒果等),下拉列表 1 显示从“葡萄”变为其他内容(即使视图模型“selectedFruit1”中的值仍然是“grapes”)。

我设置了这个 jsbin http://jsbin.com/ebuhaq/1/edit,你可以在其中看到 HTML。

所以我的问题是:为什么会这样?它是 kendo mvvm 中的错误吗?还是我错过了什么?

【问题讨论】:

    标签: mvvm drop-down-menu kendo-ui


    【解决方案1】:

    这似乎是剑道中的某种错误。在他们的新版本(版本 v2012.3.1315)中,我的代码按预期工作。 (我用的是之前的版本:2012.3.1114)

    【讨论】:

      【解决方案2】:

      认为下拉列表正在维护其选定的索引。因此,当第一次填充下拉菜单时,框 3 设置为葡萄,即水果列表中的索引 0。更改下拉列表 2 时,橙子现在成为下拉列表 3 列表中的索引 0。换句话说,我认为它总是通过 selctedIndex 值更新自身,而不是实际选择的对象。

      这只是我的猜测,我还没有查看源代码是否正确。

      【讨论】:

      • 是的,这似乎是错误,但我不知道如何修复它。据推测,下拉菜单应与与值关联的 viewmodel 属性同步
      猜你喜欢
      • 2015-05-12
      • 2013-04-12
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 2012-01-25
      • 1970-01-01
      • 2020-03-10
      相关资源
      最近更新 更多