我正在尝试这段代码,其中someProperty().length
向我返回属性的长度,并且在foreach
循环内
<p data-bind="html: (someProperty().length == null ? 0 : someProperty().length)"></p>
但是在Firefox中出现以下错误。
TypeError:someProperty(...)为null
最佳答案
在JS中,某些条件表达式如false
,""
,null
和undefined
被视为0
。因此,您无需验证html字符串是否长,空白字符串中的lenght == 0
和""
等于false
,因此您只需要执行以下操作:!someProp() ? 0 : someProp().length
,在这种情况下,0
将在somePropperty()
返回任何false
同义词时应用,并且字符串的长度从不为null
,如果为空,则length
为0
,请参见代码段中的如何优化三元data-bind
属性:
function viewModel()
{
this.someProp = ko.observable("<strong>TEST</strong>");
};
ko.applyBindings(new viewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<p data-bind="html: someProp && !someProp() ? 0 : someProp().length "></p>
关于javascript - TypeError:someProperty(...)为空- knockout ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34752696/