ember.js 如何在@tracked数组中更新对象的值,以便它可以在ember js中反映屏幕上的更改

gv8xihay  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(149)

我有一个叫做updateData的函数,每当有人点击一个单元格,我就想更新一个叫做state的数组中的那个单元格,它有3个对象,我想更新第一个对象的键。我尝试了很多方法,但似乎都不起作用,任何帮助都将不胜感激。

import Service from '@ember/service';
import { tracked } from '@glimmer/tracking';
import { action } from "@ember/object";

export default class TictactoeDataService extends Service {

    @tracked state = [{ "one": "1", "two": "", "three": "" }, { "one": "2", "two": "", "three": "" }, { "one": "3", "two": "", "three": "" }]
    get all() {
        return this.state
    }
    @action
    updateData(val) {
        this.state[0].two=val; // not updating 
        this.state=this.state // not working
    }
}
4xrmg8kj

4xrmg8kj1#

我会这样做:

const state = this.state;
state[0].two = val;
this.state = [...state]

我认为this.state=this.state可能会保持相同的引用,因此不会更新自动跟踪,而扩展数组肯定会创建一个新数组。

相关问题