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

セッターメソッドを使用して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

問題の解決策を見つけたと思います.vanilla jsonオブジェクトの代わりに、常に ember object を使用する必要があります.jsonオブジェクトをemberラッパーでラップできます.これにより、 set および get などのメソッドが提供されます.

于 2013-03-27T07:17:17.823 に答える
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 に答える