我正在尝试这段代码,其中someProperty().length向我返回属性的长度,并且在foreach循环内

<p data-bind="html: (someProperty().length == null ? 0 : someProperty().length)"></p>


但是在Firefox中出现以下错误。


  TypeError:someProperty(...)为null

最佳答案

在JS中,某些条件表达式如false""nullundefined被视为0。因此,您无需验证html字符串是否长,空白字符串中的lenght == 0""等于false,因此您只需要执行以下操作:!someProp() ? 0 : someProp().length,在这种情况下,0将在somePropperty()返回任何false同义词时应用,并且字符串的长度从不为null,如果为空,则length0,请参见代码段中的如何优化三元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/

10-09 16:20