微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何更新@tracked 数组中对象的值,以便它可以反映 ember js 中屏幕上的变化

我有一个名为 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",{ "one": "3","three": "" }]
    get all() {
        return this.state
    }
    @action
    updateData(val) {
        this.state[0].two=val; // not updating 
        this.state=this.state // not working
    }
}

解决方法

我会这样做:

enum StudentType
{
    BCStudent,OntarioStudent,badStudent,GoodStudent,Medal_of_HonorStudent
}

StudentType.BCStudent.ToCamelString(); // BC Student
StudentType.OntarioStudent.ToCamelString(); // Ontario Student
StudentType.badStudent.ToCamelString(); // bad Student
StudentType.GoodStudent.ToCamelString(); // Good Student
StudentType.Medal_of_HonorStudent.ToCamelString(); // Medal of Honor Student

我认为 const state = this.state; state[0].two = val; this.state = [...state] 可能会保持相同的引用,因此不会更新自动跟踪,而传播数组肯定会创建一个新数组。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。