如何在knockout.js中更改数组的值?

时间:2017-06-07 21:01:14

标签: javascript html arrays knockout.js

<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(array)存在时,我才会使列可见。

但我还想为一个长度为0(不为空)的数组添加一个条件。

所以,当我尝试做的时候,

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

它给了我一个错误,说它无法访问空对象的“长度”。所以,我想要做的是,我想将一个长度为0的数组设置为null,这样就可以像null对象一样隐藏它。

如何使用敲除数据绑定来做到这一点?

2 个答案:

答案 0 :(得分:1)

如果我理解正确,如果数组不是if并且null不等于length,您希望0语句通过}?

如果是这种情况,您可以在模板中执行此操作:

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

答案 1 :(得分:0)

在viewmodel中添加另一个名为isColumnVisible的成员,并使用此成员显示和隐藏列。

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