1

3 つのアイテムを保持するコンテナー オブジェクトがあります。各アイテムにはいくつかのテキスト フィールドがあります (例: text1、text2、text3、text4)。それに加えて、currentItemIndex というプロパティに基づいて現在のアイテムを返す計算プロパティもあります。

したがって、基本的に、これは「アイテム モデル」です。

App.Item = Ember.Object.extend({
    text1: null,
    text2: null,
    text3: null,
    text4: null
});

これは計算されたプロパティです

App.currentItemIndex = 0;
App.currentItem = function () {
    return App.containerObject[App.get('currentItemIndex')];
}.property('App.currentItemIndex');

モック データソースは次のようになります。

App.containerObject.pushObject(App.Item.create({text1:'Text 1', text2:'Text 2', text3:'Text 3', text4:'Text 4'}));
App.containerObject.pushObject(App.Item.create({text1:'Text 1', text2:'Text 2', text3:'Text 3', text4:'Text 4'}));
App.containerObject.pushObject(App.Item.create({text1:'Text 1', text2:'Text 2', text3:'Text 3', text4:'Text 4'}));

ご覧のとおり、各アイテムのテキスト値は同じで、App.currentItemIndex を任意の値 0、1、または 2に変更すると、バインディングは何かが変更されたという通知をトリガーしません。、もちろんプロパティは変更されていませんが、オブジェクトは新しいものです。

質問は次のとおりです。 この通知を強制的にトリガーして、それに応じてビューを更新するにはどうすればよいですか?

4

2 に答える 2

2

の値をどのように変更するのだろうかApp.currentItemIndex。次のように、ここで set メソッドを使用する必要があります。

 App.set('currentItemIndex', 1)

App.containerObject.objectAt(App.get('currentItemIndex'))アクセスする代わりに使用できることに注意してくださいApp.containerObject[App.get('currentItemIndex')]

編集: これは動作中の jsfiddle です: http://jsfiddle.net/Sly7/c4bA2/69/

私は常に get/set を使用してプロパティにアクセスし、アプリケーション内で宣言しています。

于 2012-10-22T20:58:29.053 に答える
0

フィドル:ここ

問題の原因はremoveClass('btn-success btn-danger')通話でした。jQuery Docsでは、一度に複数のクラスを削除できると書かれているため、これは奇妙なことです。

だから、私が使うremoveClass('btn-success')removeClass('btn-danger')、それからすべてがうまくいくなら。

于 2012-10-22T22:18:11.623 に答える