gpt4 book ai didi

javascript - Ember 更新数组中的对象

转载 作者:行者123 更新时间:2023-12-02 17:59:44 25 4
gpt4 key购买 nike

我有一个带有data:[]属性的ArrayController和一个带有each循环的模板。

当我这样做的时候

this.data.push({object})

数据数组已更新,但 View 未更新。

当我这样做的时候

this.data.pushObject({object})

数据数组已更新, View 也已更新(万岁)。

当我这样做的时候

this.data[0] = {new object}

数据数组已更新,但 View 未更新。

在这种情况下,pushObject 的等价物是什么?

我找不到“updateObject”方法。有 setObjects 方法,但它奇怪地失败了。有些对象已更新,有些则没有。

对象如下:

{
item: "item",
array: [1, 2, 3, 4]
}

项目总是更新,而数组则不总是更新。我已将每个循环嵌套在模板中;这会是一个问题吗?

模板如下:

{{#each data}}

{{item}}

{{foo}}

{{#each array}}
{{this}}
{{/each}}

{{/each}}

我编辑的方式就像(在 Controller 中):

var itemToEdit = self.get('data')[0];
itemToEdit['array'] = [2, 3, 4, 5];

从全局来看,问题在于 View 不会重新渲染。当我转到另一条路线然后返回当前路线时,所有内容都会通过我所做的所有更新正确呈现。

** 进展:当我这样做时

self.get('data').setEach('foo', Math.random());

foo 属性在 View 中正确设置和更新...数组元素属性的“set”方法到底在哪里?

最佳答案

每个对象都是一个普通的 JavaScript 对象。您需要更改为Ember.Objects。而不是

this.data.pushObject({ foo: 'bar' })

你需要使用

this.data.pushObject(Ember.Object.create({ foo: 'bar' })).

需要Ember.Object,因此您可以使用set方法来更新 View 。

关于javascript - Ember 更新数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20657265/

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