私が何か間違ったことをしたかどうかはよくわかりませんが、ここにあります。
いくつかのプロパティを持つコンポーネントを作成しました。それらはすべて、コンポーネントインスタンスのスコープ内で正しく機能します。 ただし、配列値を使用してプロパティを追加すると、予期しない動作が発生します。要素が@setを介してコンポーネントの配列にプッシュされると、各コンポーネントのプロパティにプッシュされます。
私はあなたが次のようなものを持っていると思います:
App.MyThingsComponent = Ember.Component.extend({
things: []
}):
これは、インスタンス化されたときではなく、クラスが定義されたときに評価されるため、すべてのコンポーネントに同じ配列のインスタンスを使用します。
これを修正するには、コンポーネントの初期化時に配列をインスタンス化します。
App.MyThingsComponent = Ember.Component.extend({
things: null,
setupThings: function(){
this.set("things", []);
}.on("init")
}):
これで、コンポーネントインスタンスごとに新しい配列インスタンスが取得され、期待どおりに動作するはずです。
hth
どうもありがとう! それで、これは意図された振る舞いですか? たとえば、文字列でこのように機能しないのはなぜですか?
@Geokoumpaこれは、Javascriptのプロトタイプの継承によるものです。 これは、Javascriptのその側面について学ぶのに役立つ@wycatsからの徹底的なブログ投稿です。
http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/
最も参考になるコメント
私はあなたが次のようなものを持っていると思います:
これは、インスタンス化されたときではなく、クラスが定義されたときに評価されるため、すべてのコンポーネントに同じ配列のインスタンスを使用します。
これを修正するには、コンポーネントの初期化時に配列をインスタンス化します。
これで、コンポーネントインスタンスごとに新しい配列インスタンスが取得され、期待どおりに動作するはずです。
hth