2016-10-31 5 views
0

私は、次のKOプロパティを持っている:なぜKOプロパティが分割されるのですか?

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世紀、NY

それが空の場合、私は "TBD" をこのようになっています:

T

B

D

+1

"TBD"の代わりに["TBD"]を返してください。文字列は文字の配列に変換できるので、単一の文字列を含む配列を指定します。 –

答えて

1

["TBD"]代わりの"TBD"を戻してください。文字列は文字配列に変換できるので、単一の文字列を含む配列を指定してください。

2

これは、関数から返された配列を返すことを期待しているからです。これは.mapがあなたに与えるものです。あなたは、単一の文字列を返す場合は、ノックアウトはforeachで各文字を反復処理されます。

data-bind="foreach: propertyView" 

あなただけの配列にあなたのデフォルトの戻り値をラップする必要があります。

else return ["TBD"]; 
+0

あなたの答えとあなたの説明をありがとう、今私はそれを理解しています。私は答えとしてそれを受け入れることはできません申し訳ありません@DavidThomas前にそれに答えた... – user3378165

関連する問題