2017-06-07 15 views
0
<div class="row"> 
    <div class="col-md-6" data-bind="visible: application.candidateMostRecentAcademic" style="display:none;"> 
     <span>Education:</span> 
      <!-- ko if: application.candidateMostRecentAcademic != null --> 
       <!-- ko with: application.candidateMostRecentAcademic[0] --> 
       <span data-bind="text: $data.degreeTypeName"></span> 
       <span data-bind="text: $data.institutionName"></span> 
       <span data-bind="text: $data.dateToYear"></span> 
       <!-- /ko --> 
      <!-- /ko --> 
    </div> 
</div> 

私は、application.candidateMostRecentAcademic(配列)が存在する場合にのみ、列を表示するようにしました。knockout.jsの配列の値を変更するには?

しかし、長さが0(nullでない)の配列の条件を追加することも考えました。私がしようとしたとき

ので、

<div class="col-md-6" data-bind="visible: application.candidateMostRecentAcademic.length != 0" style="display:none;"> 

は、それがnullオブジェクトの「長さ」にアクセスできないことを言って私にエラーを与えました。だから、私がやろうとしているのは、nullオブジェクトのように見えないように、長さ0の配列をnullに設定したいのです。

どうすればノックアウトデータバインディングを行うことができますか?

+0

あなたはのviewmodelを共有できますか? –

+0

ViewModelの配列を 'application.candidateMostRecentAcademic = []'として初期化して、nullになることはありませんが、デフォルトで長さは0になります。記述したようにエラーは発生しません。 – Yatin

答えて

1

は私が正しくあなたを理解していればアレイがnullでない場合、あなたはあなたのif文が渡すと、それはlengthだ場合0に等しいではないでしょうか?この場合は

、あなたはあなたのテンプレートでこれを行うことができます:

<div class="col-md-6" data-bind="visible: application.candidateMostRecentAcademic && application.candidateMostRecentAcademic.length !== 0"> 
+0

これはうまくいった!どうもありがとうございます! – Dukakus17

0

viewModelにisColumnVisibleという別のメンバーを追加し、このメンバーを使用して列を表示および非表示にします。

var viewModel={ 
    isColumnVisible=true; 
    loadData:function(){ 
     // code to load data; 
     // application= something 
     if(application.candidateMostRecentAcademic ===null){ 
      this.isColumnVisible=false; 
     } 
    } 
} 
関連する問題