javascript - 进度条值未绑定到使用 Knockout.js 的数据绑定值属性
问题描述
我有一个进度条,我添加了一个条件,如果值低于 100,颜色应该是红色;如果是 100,颜色应该变成绿色。但是当我调试代码时,我看到进度值返回 0,即使某些值被分配给 value 属性。
下面是进度条码,我在data-bind
属性中分配值 100。
<div class="card-header float-right" style="width:50%; padding-left:100px;">
<progress id="myProgress" data-bind="attr: { value: 100, }" min="0" max="100"></progress>
</div>
下面是javascript代码;当我调试并检查进度值时,它显示 0。
$(document).ready(function () {
var progressvalue = $("#myProgress").val();
var progressText = $("#myProgress").text();
if (progressvalue == 100) {
$('#myProgress').addClass("progress-100");
$('#myProgress').removeClass("progress-below");
}
else {
$('#myProgress').addClass("progress-below");
$('#myProgress').removeClass("progress-100");
}
});
解决方案
您不需要data-bind
我在当前代码中看到的属性(尽管您可能有超出您所显示内容的原因)。 编辑:对于 Knockout.js,您当然需要该data-bind
属性。
您需要做的就是value
为您的<progress>
元素设置 a,然后确保您正在更新它,因为它代表的任何进程都在进行中。
<progress id="myProgress" value="10" max="100"></progress>
编辑:
对于Knockout.js,您需要将data-bind
属性绑定到ViewModel字段,并且该 ViewModel 字段需要与 Observable 关联。
你可以做这样的事情(一个玩具示例,它每秒将进度值增加 10,但展示了如何更新 ViewModel,以及在达到阈值后触发类更改):
<div class="card-header float-right" style="width:50% ; padding-left:100px">
<progress
id="myProgress"
data-bind="value: progressValue, class: progressClass"
max="100"
></progress>
</div>
<script>
const INITIAL_PROGRESS = 1;
const PROGRESS_THRESHOLD = 90;
const BELOW_THRESHOLD_CLASS = "progress-below";
const ABOVE_THRESHOLD_CLASS = "progress-100";
let progressViewModel = {
progressValue: ko.observable(INITIAL_PROGRESS),
progressClass: ko.observable(BELOW_THRESHOLD_CLASS)
};
ko.applyBindings(
progressViewModel,
document.getElementById("myProgress")
);
ko.when(
function() {
return progressViewModel.progressValue() > PROGRESS_THRESHOLD;
},
function(result) {
progressViewModel.progressClass(ABOVE_THRESHOLD_CLASS);
}
);
for (let i = 1; i < 11; i++) {
window.setTimeout(function() {
progressViewModel.progressValue(i * 10);
}, i * 1000);
}
</script>
然后你必须弄清楚你希望你的 Observable 值如何更新。
推荐阅读
- python - 从 Pycharm 控制台调用函数后进入调试模式
- android - 如何在 Android Emulator 上获取上传文件的路径?
- java - 以可读的方式在 SQL Server 中存储 java.time.Instant
- facebook - 如何设置 instagram 企业帐户 webhook?
- ssl - How to get Certificate Chain to Show on Google Chrome
- python - 获取查询集,它是一个数据库查询的聚合值
- python-3.x - 通过 API 查询 NIH 的拒绝问题
- google-analytics - BigQuery 问题 - 我无法提取添加到购物车的产品列表的数量和产品(Google Analytics - UA)
- pentaho - Pentaho如何在折线图中输入数据?
- java - 我尝试将 Eclipse IDE 用于 java,但控制台似乎不起作用