Knockout数据绑定不会从select绑定更新自定义事件

时间:2014-08-15 11:03:19

标签: javascript jquery knockout.js

我在更新data-bind元素时通过自定义事件进行select更新时出现问题。我们的想法是select元素更改了更新datatype参数。然后,如果选择了特定值,则更改事件会触发更新sliderType这是一个布尔值并更改为true。一切正常,但div -data-bind="if: sliderType-没有更新更新,但它适用于页面加载。

有没有办法强制页面重新检查绑定?

这是代码的一个片段,可以让您了解我的结构。

HTML

<select data-bind="options: Items, optionsText: 'type', value: dataType, optionsCaption: 'Choose Data Item...', event: { change: dataTypeChange }"></select>
<div data-bind="if: sliderType">Here is a message. Astonishing.</div>

的JavaScript

dataTypeChange: function() {this.sliderType = (this.dataType._latestValue.id == 6) ? true : false;
正在使用

ko.observable:

{
    dataItemId: -1,
    name: ko.observable(res.Text),
    dataType: ko.observable(res.DataType),
    dataTypeChange: function() {
        this.sliderType = (this.dataType._latestValue.id == 6) ? true : false;
    },
    sliderType: sliderActive
}

1 个答案:

答案 0 :(得分:2)

我这个愚蠢的错误,如果data-bind对象是一个可观察的对象会有帮助

{
    dataItemId: -1,
    name: ko.observable(res.Text),
    dataType: ko.observable(res.DataType),
    dataTypeChange: function() {
        this.sliderType = (this.dataType._latestValue.id == 6) ? true : false;
    },
    sliderType: ko.observable(sliderActive)
}