1

在我尝试访问内容时进行调试

this.get('this.content').objectAt(0).selected_group
true

但是当我尝试设置 selected_group 时,它给了我以下错误

this.get('this.content').objectAt(0).selected_group = false;
Error: assertion failed: Must use Ember.set() to access this property

当我尝试使用 setter 方法设置 selected_group 时再次出现以下错误

Ember.set(this.get('this.content').objectAt(0).selected_group, false)
TypeError: Object #<error> has no method 'indexOf'

this.get('content').objectAt(0) 如下所示

Object {id: "GRP1", divisions: Array[6]}
__ember1364353119575_meta: Meta
divisions: Array[6]
0: Object
budget: Object
current_month_proj: Object
division_name: "North Florida"
facilities: Array[8]
id: "DIV1"
last_year: Object
prev_month: Object
prior_three_months: Object
__proto__: Object
1: Object
2: Object
3: Object
4: Object
5: Object
length: 6
__proto__: Array[0]
get group_name: function () {
id: "GRP1"
set group_name: function () {
__proto__: Object

为 ArrayController 的内容(obj 数组)设置/添加属性的正确方法是什么?

4

3 回答 3

0

或者您使用序列化程序。无论如何,只要您的对象没有名为“selected_group”的属性(并且,通过您的示例对象,这似乎是这种情况),您将无法以任何一种方式设置它。

于 2013-03-27T09:22:15.307 回答
0

你在正确的道路上。你只需要解决一些问题。

而不是this.get('this.content'),使用this.get('content').

此外,这里是如何使用 Ember.set:

this.get('content').objectAt(0).set('selected_group', false);

由于 ArrayController 是代理,因此您可以直接访问其数组,而无需content

this.objectAt(0).set('selected_group', false);

您也可以使用 Ember 的特殊数组属性firstObject

this.set('firstObject.selected_group', false);
于 2013-03-26T17:14:42.253 回答
0

我想我已经找到了解决问题的方法,我们应该始终拥有 ember 对象,而不是拥有 vanilla json 对象,我们可以用 ember 包装器包装我们的 json 对象,这将提供 set 和 get 之类的方法

于 2013-03-27T07:17:17.823 回答