javascript - 通过 html 中的 Knockout 循环将值存储在变量中
问题描述
我是 KO 的新手,在我的 html 文件中,我正在打印这样的值 -
<!-- ko foreach: { data: JSON.parse($parent.options), as: 'option' } -->
<!-- ko if: option.label === 'AAA' || option.label === 'BBB' -->
<dd class="values" data-bind="html: option.value"></dd>
<!-- /ko -->
<!-- /ko -->
它工作正常。但我想要的是,我想将循环的所有值分配给一个变量并想在循环后打印。就像我们在 php 中所做的那样-
foreach($data as $key=> $index){
if($key==0)
$var = $index['value'];
else
$var .= ' '.$index['value'];
}
echo $var
我想使用上面的 KO 循环在 KO 的 html 文件中做同样的事情。
解决方案
您可以像这样创建 2 个computed
属性。
然后parsedOptions
在foreach
. 并绑定concatenatedValues
到span
const JSONstring = JSON.stringify([{ label: "AAA", value: 1 },{ label: "BBB", value: 2 },{ label: "CCC", value: 3 }]);
const viewModel = function() {
this.options = JSONstring;
this.parsedOptions = ko.computed(() => {
return JSON.parse(this.options)
});
this.concatenatedValues = ko.computed(() => {
return this.parsedOptions().map(a => a.value).join(' ')
});
}
ko.applyBindings(new viewModel())
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<!-- ko foreach: { data: parsedOptions, as: 'option' } -->
<!-- ko if: option.label === 'AAA' || option.label === 'BBB' -->
<dd class="values" data-bind="html: option.value"></dd>
<!-- /ko -->
<!-- /ko -->
<br> All values:
<span data-bind="text: concatenatedValues"></span>
推荐阅读
- java - 在我的机器上安装一个虚拟 LDAP 服务器(windows 2010)
- python - 实现自己独特的 Python Mock 模块
- jenkins - 如果一个容器发生故障,如何杀死多容器 pod?
- sql - 如何在存储过程中设置锁?
- svg - Gulp dest 路径附加了完整的 src 路径位置,而不仅仅是 dest 属性
- python - 惊喜 NMF 抛出 ZeroDivisionError:浮点除法
- dns - 复制 dns 层次结构
- python - 在 spacy 中用 ## 替换数字的正确 POS 标签
- clickhouse - clickhouse 一次合并一个分区
- android - 如何检查房间数据库的完整性?