Knockout.js 为什么KO财产会被分割?

Knockout.js 为什么KO财产会被分割?,knockout.js,Knockout.js,我拥有以下财产: this.propertyView = ko.pureComputed(function () { if (!$.isEmptyObject(this.properties())) { return this.properties().map(function (prop) { var singleProp = ''; for (var p in prop) { if (pr

我拥有以下财产:

this.propertyView = ko.pureComputed(function () {
    if (!$.isEmptyObject(this.properties())) {
        return this.properties().map(function (prop) {
            var singleProp = '';
            for (var p in prop) {
                if (prop[p]) {
                    singleProp += prop[p] + ', ';
                }
            }
            return singleProp.slice(0, -2);
        });
    }
    else return "TBD";
}, this);
以及HTML:

<span>PROPERTY</span>
<div data-bind="foreach: propertyView">
  <span data-bind="text: $data" class="fnt-normal"></span>
</div>
属性
问题是:如果对象不是空的,它工作正常,但是如果它是空的,它会将“TBD”拆分为一行,每个字母都在一个新行中。 例如:如果它不是空的,它看起来像:

纽约州第23街test

如果它是空的,我将通过以下方式获取“TBD”:

T

B

D


这是因为您希望从函数返回一个数组-这就是
.map
提供给您的。当您返回单个字符串时,knockout使用
foreach
对每个字符进行迭代:

data-bind="foreach: propertyView"
您只需将默认返回值包装在一个数组中:

else return ["TBD"];

这是因为您希望从函数返回一个数组-这就是
.map
提供给您的。当您返回单个字符串时,knockout使用
foreach
对每个字符进行迭代:

data-bind="foreach: propertyView"
您只需将默认返回值包装在一个数组中:

else return ["TBD"];

尝试返回
[“TBD”]
而不是
“TBD”
。字符串可以转换为字符数组,因此请指定包含单个字符串的数组

尝试返回
[“TBD”]
,而不是
“TBD”
。字符串可以转换为字符数组,因此请指定一个包含单个字符串的数组

尝试返回[“TBD”]而不是“TBD”。字符串可以转换为字符数组,因此请指定包含单个字符串的数组。请尝试返回[“TBD”]而不是“TBD”。字符串可以转换为字符数组,因此请指定一个包含单个字符串的数组。感谢您的回答和解释,现在我理解了。“很抱歉,我不能接受这个答案,@DavidThomas以前回答过……谢谢你的回答和解释,现在我明白了。“很抱歉,我不能接受这个答案,”戴维托马斯之前回答说。。。