代码之家  ›  专栏  ›  技术社区  ›  Maxcot

使一个元素可见,这取决于淘汰中另一个元素的值

  •  0
  • Maxcot  · 技术社区  · 8 年前

    我的HTML中有三个元素:问题、分数和评论。分数是一个HTML选择,选择“差”、“好”和“优秀”。

    如果分数为 =“好”。

    <!-- ko foreach: questions -->
      <tr>
          <td data-bind="text: question"></td>
          <td><select data-bind="options: availableScores"></select></td>
          <td>
             <!-- ko if: availableScores() != 'Good' -->
                 <input data-bind="textInput: comment" />
             <!-- /ko -->
          </td>
      </tr>
     <!-- /ko -->
    

    谢谢你的建议。

    2 回复  |  直到 8 年前
        1
  •  0
  •   pfx    8 年前

    我假设只有在 挑选出来的 分数不同于“好”的值。

    为此,必须跟踪所选值并将其绑定到列表框, 下面通过酒店 selectedScore .

    最小的mcve显示了这种行为。

    var Question = function() {
    
      _self = this;
      _self.question = "";
      _self.comment = ko.observable("");
      _self.availableScores = ["Good", "Poor", "Excellent"];
      _self.selectedScore = ko.observable("Good");
    }
    
    var vm = new Question();
    ko.applyBindings(vm);
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
    
    <select data-bind="options: availableScores, value: selectedScore"></select>
      
    <!-- ko if: selectedScore() != 'Good' -->            
    Comment: <input data-bind="textInput: comment" />
    <!-- /ko -->
        2
  •  0
  •   bestestefan    8 年前

    修改这行怎么样:

     <!-- ko if: availableScores() != 'Good' -->
    

    类似于:

     <!-- ko if: displayComments() -->
    

    在代码中添加如下内容:

    this.displayComments = ko.computed(function(){ return this.availableScores() !== 'Good'; });
    
    推荐文章