【问题标题】:How to change value of an array in knockout.js?如何在 knockout.js 中更改数组的值?
【发布时间】:2017-11-09 09:34:41
【问题描述】:
<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 对象一样不可见。

如何使用淘汰赛数据绑定来做到这一点?

【问题讨论】:

  • 可以分享一下viewmodel吗?
  • 你能不能把你的ViewModel中的数组初始化为application.candidateMostRecentAcademic = [],这样它就永远不会为空,但默认长度为0,不会像你描述的那样抛出错误。跨度>

标签: javascript html arrays knockout.js


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    在视图模型中添加另一个名为 isColumnVisible 的成员,并使用该成员来显示和隐藏列。

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

    【讨论】:

      猜你喜欢
      • 2012-03-16
      • 2012-11-18
      • 2015-12-10
      • 2013-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-09
      • 2020-06-14
      相关资源
      最近更新 更多