knockout.js - KnockoutJS json 对象/可观察 "visible"绑定(bind)不起作用

标签 knockout.js

我正在尝试配置一个相当复杂的模型来使用 KnockoutJS 绑定(bind) View 。

这是一个问题标记部分:

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

输入元素从未显示,但我的“调试”范围显示内容

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

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

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

最佳答案

我认为您需要为 HasValue 属性创建一个计算值。您的绑定(bind) dialogSelectedCode.HasValue 不遵循可观察值,它会检查可观察值函数上的 HasValue。属性方法 dialogSelectedCode().HasValue 抛出错误。创建一个可计算并让它进行测试 works :

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

关于knockout.js - KnockoutJS json 对象/可观察 "visible"绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11747844/

相关文章:

javascript - knockout 验证失败

html - 使用 knockout 在变量表上进行 div 定位和缩放

javascript - knockout JS : Showing incorrect values in "select" tag

javascript - 如何使用 Knockout 连接 Observable 数组中的所有项目?

model-view-controller - 如何计算带有 Breeze .js 扩展实体的网格中的总数?

c# - 如何使用 knockout、jquery 和 ASP.NET MVC 创建可重用的控件?

javascript - knockout : Passing click event data to a div

knockout.js - Knockout checkedValue 绑定(bind)不显示选中

events - 使用映射插件时,Knockout 中的 beforeChange 值未定义

javascript - KoGrid:访问 selectedItemCount