gpt4 book ai didi

javascript - Knockout JS,如何在更改可观察数组中的值时更改样式属性

转载 作者:行者123 更新时间:2023-11-27 22:41:09 24 4
gpt4 key购买 nike

哟,我正在尝试构建这个小游戏,其中包含 6 个子数组的数组,每个数组包含 7 个值,生成一个国际象棋场。

当您单击其中一个字段时,它应该将颜色从白色变为红色或白色变为黄色。颜色属性取决于写入数据数组中的值(与嵌套 div 标记内的 css 绑定(bind)一起使用)。

数组“数据”(像矩阵一样构建)如下所示:[ [0,0,1,2,0,2,1], [0,0,0,0,2,2,1] 等]

在 HTML 中,我使用“forEach”循环将数组的值绑定(bind)到 div 标记并生成国际象棋字段 - 总共 42 个字段(6*7=42)。

<body>

<div class="playground">
<div class="score">
<div id="p1" style="flex: 2;"></div>
<div class="void" style="flex: 3;"></div>
<div id="p2" style="flex:2"></div>
</div>

<div class="container1" data-bind="foreach: data.matrix">

<div class="container2" data-bind="foreach: $data">
<div class="blocks">

<div data-bind="css: {corny: $data >= '0', white: $data === '0', yellow1: $data === '1', red2: $data === '2'},
attr: { 'id': $parentContext.$index() + '_' + $index()},
click: $root.chipInserted">
</div>
</div>
</div>
</div>
</div>

</body>


</html>

现在我得到了国际象棋领域,当我在启动脚本之前更改“数据”中的值时,颜色会相应地设置。当我点击一个字段时,数组值也会改变,但 div 标签颜色不会。
我怎么做?

最佳答案

好吧,我明白了。

我使用具有 42 个数字的字符串作为基础来创建我的矩阵。单击该字段时,矩阵内的值发生了变化。尽管我还必须将矩阵改回一个简单的字符串,并使用我最初创建国际象棋领域的“创建者功能”重新使用它。

长话短说:

let result = self.addColor(id, self.data); 
//'result' is the new matrix with the changed value

let resultString = self.matrixToString(result());
//'resultString' is the conjoined array - a simple string made from 'result-matrix'
//with a length of 42

let newMatrix = self.Spielfeld.creator(resultString);
//now put that String into the "matrix-creator function" in order to create the
//updated matrix

self.data(newMatrix);
//put the new matrix into the observable and your viewmodel should update

如果有人对 knockout 有足够的了解,他们可以解释为什么必须这样做吗?
我阅读了有关 sleep 函数的信息,这些函数无法访问可观察对象,因为访问不会“直接”发生。和那个有关系吗?

关于javascript - Knockout JS,如何在更改可观察数组中的值时更改样式属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59786559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com