私はこのコントローラーに値を持っています。
App.xcontroller = SC.ArrayController.create({
...some code...
array_values = [],
..more code...
})
今、私はビューのどこかにこのvalueBindingを持っています
valueBinding: 'App.xController.array_values',
配列の値を変更しても、ビューが更新されません。しかし、私がコントローラーで次のことを行うと:
var array_values = this.get('array_values');
... adding / removing values to the array....
if (x_values.contains(x)){
x_values.removeObject(x)
} else {
x_values.pushObject(x);
};
this.set('array_values', array_values.copy());
バインディングが機能すると、ビューが更新されます。ただし、copy()を使用する場合のみ。アレイのコピーを作成したくありません。私見では、これは効率的ではありません。valueBindingにコンテンツが変更されたことを知らせたいだけです。
x値は単なる整数の集まりです。
これが必要な理由:SegmentedItemViewの値キーを変更したい。アクティブなボタンを変更したい。しかし、私はフォアハンドでセグメント化されたビューの数を知らないので、生成されたすべてのセグメント化されたビューの値をいくつかの共通の配列にバインドし、その共通の配列を変更して、すべてのセグメント化されたビューのアクティブなボタンを変更できるようにすると思いました。各ボタンは一意のキーを持つアイテムを表すため、正常に機能します。ただし、毎回配列をコピーする必要があります。