Javascript 使用剔除样式绑定隐藏表行
我想用knockout.js将表行的显示样式绑定到viewmodel属性。我必须使用绑定,因为我想根据viewmodel中的其他属性隐藏或显示表行 示例HTML代码:Javascript 使用剔除样式绑定隐藏表行,javascript,asp.net,asp.net-mvc,knockout.js,typescript,Javascript,Asp.net,Asp.net Mvc,Knockout.js,Typescript,我想用knockout.js将表行的显示样式绑定到viewmodel属性。我必须使用绑定,因为我想根据viewmodel中的其他属性隐藏或显示表行 示例HTML代码: <tr data-bind="style: myProperty"> Test </tr> 但这不起作用。加载页面后输入属性,但仍显示表行。还有别的方法吗?或者我忘了什么吗?您应该使用“可见”绑定。更多细节 您的示例可能如下所示: <tr data-bind="visible: myProp
<tr data-bind="style: myProperty">
Test
</tr>
但这不起作用。加载页面后输入属性,但仍显示表行。还有别的方法吗?或者我忘了什么吗?您应该使用“可见”绑定。更多细节
您的示例可能如下所示:
<tr data-bind="visible: myProperty">
Test
</tr>
测验
感谢您的帮助,我找到了另一个解决方案:
根据当时的文档,我现在将样式设置为:
<tr data-bind="style: { display: !TrueOrFalseProperty() ? 'none' : 'inline' }">
Test
</tr>
测验
这是可行的。如果你没有访问任何其他可观察到的,为什么你需要一个
计算的?为什么不使用装订呢?无论如何,样式绑定采用的是对象而不是字符串,因此需要编写:this.myProperty=ko.computed(()=>{return{display:“none”};})
使用visible:myProperty
更改元素的显示
样式,但具有简洁、健壮和可读的绑定。我建议使用@sbirthare给出的答案是的,这是错误的。您确实应该使用可见绑定。而且,您最初的方法比在html中排列逻辑要好。你只是缺少了“无”的引号。一旦你看到了用“正确”的方式做这件事的微妙优势,击倒就很棒了。
<tr data-bind="style: { display: !TrueOrFalseProperty() ? 'none' : 'inline' }">
Test
</tr>