使一个元素可见取决于另一个元素在 knockout 中的值
Make one element visible depending on the value of another in knockout
我的 HTML 中有三个元素,即问题、分数和评论。分数是 HTML SELECT,其中有 "Poor"、"Good" 和 "Excellent" 选项。
我只希望评论字段在分数为 而非 = "Good" 时可见。
<!-- 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 -->
感谢任何建议,谢谢。
你如何修改这一行:
<!-- ko if: availableScores() != 'Good' -->
类似于:
<!-- ko if: displayComments() -->
并在您的代码中添加如下内容:
this.displayComments = ko.computed(function(){ return this.availableScores() !== 'Good'; });
我假设评论文本框必须仅在 selected 分数与值 'Good' 不同时才可见。
为此,必须跟踪所选值并将其绑定到列表框,
下面通过 属性 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 -->
我的 HTML 中有三个元素,即问题、分数和评论。分数是 HTML SELECT,其中有 "Poor"、"Good" 和 "Excellent" 选项。
我只希望评论字段在分数为 而非 = "Good" 时可见。
<!-- 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 -->
感谢任何建议,谢谢。
你如何修改这一行:
<!-- ko if: availableScores() != 'Good' -->
类似于:
<!-- ko if: displayComments() -->
并在您的代码中添加如下内容:
this.displayComments = ko.computed(function(){ return this.availableScores() !== 'Good'; });
我假设评论文本框必须仅在 selected 分数与值 'Good' 不同时才可见。
为此,必须跟踪所选值并将其绑定到列表框,
下面通过 属性 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 -->