javascript - 三元表达式始终为真 - 不为 NULL

标签 javascript knockout.js

我有一个 html 表格,以 Knockout 为界:(例如,只是表格的一部分)

<tbody>
  <!-- ko foreach: users -->
       <tr><td valign="top"><span data-bind="text: name ? name : '&nbsp;'"></span></td></tr>
  <!-- /ko -->
</tbody>

问题是三元表达式不能正常工作,它总是表现得像name 不是NULL,即使它是NULL,第一部分始终在执行。

我做错了什么?

最佳答案

如果 name 是一个可观察对象,它永远不会是假的;您必须调用它: text: name() ?名称():' '。如果它们不是表达式的一部分,KO 只会自动为你调用它们。如果 name 不是可观察的,则在您更改它时不会重新评估绑定(bind)。

另请注意,您可以使用 JavaScript's curiously-powerful || operator 避免调用它两次。 *:文本:名称()|| ' '.


* (这是我贫血的小博客上的帖子。)

关于javascript - 三元表达式始终为真 - 不为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834372/

相关文章:

javascript - 如何检查 JavaScript 中定义的参数和传递的参数?

javascript - d3 工具提示 - 在 d3 折线图中为工具提示添加 div

knockout.js - 模板内的 knockout 绑定(bind)不起作用

asp.net-mvc - 通过 MVC4 中的表单发布 JSON 数据

Knockout.js applyBindings 两次重复结果

data-binding - 将可见性绑定(bind)到 knockout 中的表达式

jquery - 嵌套 knockout foreach 模板

javascript - jQuery UI 自动完成附加 PHP 和 MySQL

javascript - 是什么阻止此网页缩小以适应小于 530 像素的宽度?

javascript - 如何将 DropBox 选择器按钮更改为图像?