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以前回答过……谢谢你的回答和解释,现在我明白了。“很抱歉,我不能接受这个答案,”戴维托马斯之前回答说。。。