2012-03-09 11 views
1

私はEmber.jsのビットで自分の足を濡らしています。私はあなたがクエリを提出することができます超シンプルなフォームを作成しようとしています。Ember.js 'Objects'と 'ArrayController'

App = Ember.Application.create(); 

App.QueryFormView = Ember.View.extend({ 
    submitQuery: function() { 
     App.queries.pushObject({ 
      firstName: this.get('name'), 
      message: this.get('message') 
     }); 

     App.queries.save(); 
    } 
}); 

// Model 
App.Query = Ember.Object.extend(); 

// Collection 
App.queries = Ember.ArrayController.create({ 
    content: [], 
    save: function() { 
     $.post('api/query', JSON.stringify(this.toArray()), function (data) { 
      // Queries saved 
     }); 
    } 
}); 

それが送信されたクエリを形成するたびに、私はqueriesArrayControllerにオブジェクトをプッシュして、保存し実行します。

しかし、私はEmber.Objectという別名モデルがどこに影響するのか理解するのに苦労しています。ここでは使用されていないので、正しく活用する方法を知りたいと思います。

答えて

3

は、Ember.Objectを使用すると、がありません。バインディングをしたり、プロパティを計算したり、プロパティの変更を観察したりする必要がない場合は、必要ありません。

しかし、あなたは、このようにコードを変更したいそれらのもののいずれかの操作を行いたいならば:モデルで

文書期待フィールドを。

// Model 
App.Query = Ember.Object.extend({ 
    firstName: null, // just to indicate what props you're expecting 
    lastName: null 
}); 

匿名オブジェクトの代わりにモデルオブジェクトを作成します。 大きな欠点のため

submitQuery: function() { 
    App.queries.pushObject(App.Query.create({ // .create() here 
     firstName: this.get('name'), 
     message: this.get('message') 
    }); 

    App.queries.save(); 
} 

そして今。 JSON.stringify()はあなたが望まない内部のものをシリアル化します。したがって、ワイヤを介して送信される各オブジェクトは、最初に必要なプロパティに簡略化する必要があります。これに関するヘルプはこちらをご覧ください:Reflection on EmberJS objects? How to find a list of property keys without knowing the keys in advance

save: function() { 

    var obj = buildSimpleObject(this); // implements this somehow 

    $.post('api/query', JSON.stringify(obj.toArray()), function (data) { 
     // Queries saved 
    }); 
}