Ember 側から見ると、Ember Data を使用する理由はありません。Ember はそれがなくても問題なく動作するからです。しかし、Ember のインフラストラクチャは、 が提供する API に大きく依存しておりEmber.Observable
、これは のすべてのサブクラスで利用できますEmber.Object
。同様に、 と を使用するEmber.Array
と、JavaScript 配列はより多くの Ember 機能をサポートしますが、これは を無効Ember.MutableArray
にしない限り自動的に行われます。Ember.EXTEND_PROTOTYPES
したがって、非常に合理的なアプローチの 1 つは、既存のモデル クラスを に移植することEmber.Object
です。それには、とりわけ、プロパティを使用get
しset
てアクセスする必要があります。これを行うと、オブジェクトはファーストクラスの Ember 市民になり、ビューの自動更新やデータ バインディングなど、Ember の優れた機能すべてにアクセスできるようになります。
外観と、 EmberEmber.Object
の他の部分との統合方法は次のとおりです。
MyApp.Person = Ember.Object.extend({
firstName: null,
lastName: null,
init: function () {
// You can put more initialization code here.
},
// Compute fullName based on firstName and lastName.
// This will automatically propagate updates when
// firstName or lastName changes.
fullName: function () {
return this.get("firstName") + " " + this.get("lastName");
}.property("firstName", "lastName")
});
var person = MyApp.Person.create({ firstName: "Jane", lastName: "Doe" })
次に、Ember ビューでは、次のように記述できます。
<p>{{person.fullName}}</p>
firstName
…そしてビューはいつでも、またはlastName
変更されるたびに自動的に更新されます。firstName
同様に、次のコードを使用して編集できます。
{{view Ember.TextField valueBinding="person.firstName"}}
この例では、テキスト フィールドへの変更は、基になるオブジェクトに自動的に反映されます。(ただし、ユーザーが編集を完了したときにのみ変更を伝達するテキスト フィールドを巧妙に構築することはできます。)
Ember から QT にプロパティの更新を渡す必要がある場合は、計算されたプロパティを使用してゲッターとセッターを構築するためのガイドを参照するか、オブザーバーを使用してください。JavaScript ブリッジを介して C++ API をどのように公開するかによって、多くのことが異なります。しかし、Ember.Observable
何らかの方法で接続できる限り、Ember のすべての機能に完全にアクセスできます。