data-binding - 在下拉更改 Knockout Js 上更改可观察值

标签 data-binding knockout.js observable

如果车辆是新车或二手车,我有这个下拉菜单。

<select name="VehicleType" id="vehicleTypeDropdown" data-bind="value: VehicleType">    
    <option value="New" selected="selected">Nuevo</option>
    <option value="Used">Usado</option>
</select> `

这个输入:
<input type="text" name="Mileage" data-bind="disable: VehicleType() === 'New',value:  Mileage" class="input-large"> `

如果选择的下拉列表中的值是 New,则必须禁用输入,如果使用,则应启用输入,但如果我输入一个值,observable 将获取该值,如果我将下拉值更改为 new,则 observable 必须为零.

最佳答案

View 模型中的手动订阅是处理此类问题的好方法。订阅可能如下所示:

this.VehicleType.subscribe(function(newValue) {
    if (newValue === "New") {
        this.Mileage(0);
    }
}, this);

这是使用它的示例:http://jsfiddle.net/rniemeyer/h4cKC/

HTML:
<select name="VehicleType" id="vehicleTypeDropdown" data-bind="value: VehicleType">
    <option value="New" selected="selected">Nuevo</option> 
    <option value="Used">Usado</option> 
</select>

<input type="text" name="Mileage" data-bind="disable: VehicleType() === 'New', value: Mileage" class="input-large">
<hr/>

<pre data-bind="text: ko.toJSON($root, null, 2)"></pre>

JS:
var ViewModel = function() {
    this.VehicleType = ko.observable();
    this.Mileage = ko.observable();

    this.VehicleType.subscribe(function(newValue) {
        if (newValue === "New") {
            this.Mileage(0);
        }
    }, this);
};

ko.applyBindings(new ViewModel());

关于data-binding - 在下拉更改 Knockout Js 上更改可观察值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12677431/

相关文章:

c# - DataGridView 数据源

binding - 在 knockout.js 中绑定(bind)两个 observable

javascript - 如何使用 HTML 代码中的预定义参数映射 HTTP 调用的响应参数 - Angular 5

java - 如何在RxJava2中正确调用Single/Maybe,是否需要subscribeOn和observeOn和flatMap?

在非根 ViewGroup 中使用 include 标记时,Android 数据绑定(bind)会使应用程序崩溃

data-binding - 从不同的 View 模型同步可观察的简单、干净的方法

c# - 将搜索和排序功能添加到数据绑定(bind)包装器

javascript - 动态 knockout 模板模式的潜在陷阱

javascript - 包含对象数组的 typescript 文字对象

javascript - 通过软件包安装程序安装时,Knockout 未定义