【问题标题】:Knockout.js dropdown selection change event for computed observablesKnockout.js 计算 observables 的下拉选择更改事件
【发布时间】:2014-04-25 12:47:14
【问题描述】:

我正在尝试触发下拉列表的选择更改事件,但不知何故该事件没有被触发。

这是我的代码:

<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/

我该怎么做?

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

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

    查看:-

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

    Fiddle Demo

    【讨论】:

      【解决方案2】:

      您可以通过使用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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-11
        • 1970-01-01
        • 1970-01-01
        • 2021-02-10
        • 2014-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多