【问题标题】:Knockout, previous value of select / dropdown淘汰赛,选择/下拉的先前值
【发布时间】:2014-06-26 04:49:38
【问题描述】:

我想知道下拉列表中的前一个值是什么。

在下面的 html 中我可以设置选项和当前选择的。

    <select data-bind="options: group_128,
                       optionsText: 'description',
                       value: selectedgroup_128,
                       event: { change: selectionChanged_group_128 }">
    </select>

在 Javascript / viewModel 我做的:

            selectionChanged_group_128 = function (data, event) {
            self.addItemClicked2(self.selectedgroup_128, event)
        };

此时我想知道之前选中的item是什么发送到addItemClicked2。

【问题讨论】:

    标签: javascript jquery knockout.js


    【解决方案1】:

    您可以订阅 observable 以获取更改之前的值:

    self.selectedgroup_128.subscribe(function(oldValue) {
        self.selectedgroup_128.previousValue = oldvalue;
    }, null, "beforeChange");
    

    现在你可以像这样得到之前的值:

    self.selectedgroup_128.previousValue
    

    【讨论】:

    • 非常优雅,thanx,不过,我可以拥有一大堆(生成的)组,因此我选择了 aquinas 的另一种解决方案,在我的情况下生成更少的 jscript :)
    【解决方案2】:

    为什么不直接更改模型以将新值存储为以前的值?

    http://jsfiddle.net/uLeDP/

    var ViewModel = function() {
        this.group_128 = ko.observable([{description:"first"},{description:"second"}]);
        this.selectedgroup_128 = ko.observable("first");
        this.prevgroup_128 = null;
        this.selectionChanged_group_128 = function(val) {        
            alert("Now I'm " + this.selectedgroup_128().description + " but I was " + this.prevgroup_128);
            this.prevgroup_128 = this.selectedgroup_128().description;
        }
    };
    

    【讨论】:

    • 谢谢,这是我将实施的解决方案:)
    猜你喜欢
    • 2015-11-05
    • 1970-01-01
    • 2015-05-06
    • 2023-03-08
    • 1970-01-01
    • 2015-05-06
    • 2012-01-17
    • 2015-06-11
    • 1970-01-01
    相关资源
    最近更新 更多