KnockoutJS json对象/可观察“可见”绑定无法正常工作

时间:2012-07-31 19:46:55

标签: knockout.js

我正在尝试配置一个相当复杂的模型来将视图绑定到使用KnockoutJS。

这是一个问题标记部分:

<input type="text" data-bind="visible: dialogSelectedCode.HasValue, value: dialogSelectedCodeValue"/>
<span data-bind="text: ko.toJSON(dialogSelectedCode)"></span>

输入元素从不显示,但我的“debug”范围显示内容

{"Code":"{intInc_G}","HasValue":true}

如果“决定” - 数据隐藏在JSON对象中,绑定可见输入的正确方法是什么?

更新:这是一个相当复杂的fiddle of the problem。要进入问题对话框,请运行小提琴,单击“添加块”并尝试在下拉输入中选择多个项目(特别是第一个和第二个 - 因为它们清楚地表明dialogSelectedCode变量确实正在更新。

1 个答案:

答案 0 :(得分:2)

我认为你需要为HasValue属性创建一个计算器。绑定dialogSelectedCode.HasValue不遵循observable,它会检查可观察函数上的HasValue。属性方式dialogSelectedCode().HasValue会引发错误。创建一个可计算的并让它进行测试works

self.dialogSelectedCodeHasValue = ko.computed(function() {
    var selectedCode  = ko.utils.unwrapObservable(self.dialogSelectedCode);
    return selectedCode && selectedCode.HasValue;
});