针对计算的可观察量的Knockout.js下拉选择更改事件

时间:2014-03-19 10:35:39

标签: knockout.js

我试图让dropdownlist的选择更改事件触发但不知何故事件没有被触发。

这是我的代码:

<select data-bind="options: choices, value: selectedChoice"></select>

var viewModel = function(){    
 var self= this;
self.test = ko.observable('a'),
    self.choices= ["one", "two", "three"],
self.selectedChoice = ko.computed(function () {
    var tempreview = self.test();
    if (tempreview === "a") {
        return "two";
    }
    else
        return "three";

}),
self.selectedChoice.subscribe(function(newValue) {
   alert("the new value is " + newValue); 
})
};

 var vm =new viewModel();

 ko.applyBindings(vm);

以下是链接:http://www.jsfiddle.net/sajesh1985/73Q79/1/

我该怎么做?

2 个答案:

答案 0 :(得分:0)

值绑定错误它应该是一些可观察的值。计算observable的第二件事是在测试属性上没有改变下拉选择,因此不会调用计算。在下拉列表中使用测试observable作为值绑定。

视图: -

<select data-bind="options: choices, value: test"></select>

Fiddle Demo

答案 1 :(得分:0)

您可以在不使用self.test = ko.observable()

计算的情况下实现此目的

更新了HTML

<select data-bind="options: choices, value: test"></select>

更新了JS

var viewModel = function(){    
     var self= this;
    self.test = ko.observable();
    self.choices= ["one", "two", "three"];
    self.test.subscribe(function(newValue) {
       alert("the new value is " + newValue); 
    })
};

var vm =new viewModel();

ko.applyBindings(vm);

<强> JSFiddle