在我尝试访问内容时进行调试
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数组)设置/添加属性的正确方法是什么?
答案 0 :(得分: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);
答案 1 :(得分:0)
我想我已经找到了解决问题的方法,而不是拥有vanilla json对象我们应该总是有ember对象,我们可以用ember包装器包装我们的json对象,这会提供像set和get这样的方法
答案 2 :(得分:0)
或您使用序列化程序。无论如何,只要您的对象没有名为“selected_group”的属性(并且,通过您的示例对象,似乎就是这种情况),您将无法以任何方式设置它。