KnockoutJS json 对象/可观察"visible"绑定不起作用



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

这里有一个问题标记部分:

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

输入元素从未显示,但我的"调试"跨度显示内容

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

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

更新:这是一个相当复杂的问题。要进入问题对话框,请运行fiddle,单击"添加块",并尝试在下拉输入中选择几个项目(尤其是第一个和第二个),因为它们清楚地表明dialogSelectedCode变量确实正在更新

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

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

最新更新