我正在尝试配置一个相当复杂的模型来将视图绑定到使用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
变量确实正在更新。
答案 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;
});