4

アプリケーション データとして使用できるモデルを構築するためにモデルとルーティングを定義する正しい方法は何ですか。

App.Router.map(function(){
    this.resource("main", {path:"/"});
});

App.MainRoute = Ember.Route.extend({
    model:function(){
        return App.Main.find();
    }
});

App.Main = DS.Model.extend({
    appName:DS.attr('string')
});


App.Store = DS.Store.extend({
  revision: 11,
  adapter: DS.RESTAdapter.create({
    namespace: 'api/v1'
  })
});

これにより、最終的に が呼び出されますapi/v1/mainsapi/v1/mainしかし、次のような単一のオブジェクトであるアプリケーションデータを返す呼び出しをしたい

{
    "appName":"MyApp",
    "lastLogin": "Sat May 11 2013 11:20:03 GMT+0530",
    ...
}

複数形の設定については知っていますが、それは正しい方法ではないと思います。どんな助けでも大歓迎です。前もって感謝します。

編集: Plurals を構成する場合、レンダリング テンプレートではありません

App = Ember.Application.create();

App.Router.map(function(){
    this.resource("main", {path:"/"});
});

App.MainRoute = Ember.Route.extend({
    model:function(){
        return App.Main.find();
    }
});


DS.RESTAdapter.configure("plurals", {
  main: "main"
});

App.Store = DS.Store.extend({
  revision: 11,
  adapter: DS.RESTAdapter.create({
    namespace: 'api/v1'
  })
});

App.Main = DS.Model.extend({
    "appName":DS.attr('string')
});

サーバーから受け取ったjson

{
    "main": {
        "app_name": "My App"
    }
}

テンプレート :

<script type="text/x-handlebars" data-template-name="main">
    This is {{appName}}
</script>
4

2 に答える 2

1

元の問題は、自動的に forApp.Main.find()を作成するように呼び出すという事実にあります(ルーティングの命名により自動的に生成されます)。これにより、モデルの複数形バージョンのリクエストも呼び出されます。Ember.ArraycontrollercontentMainController

したがって、複数形を変更して /main を指すようにすると、表示されているように情報が取得されますが、Ember.ArrayController. したがって、これを表示するには、テンプレートで{{#each}}. したがって、テンプレート化していればおそらく機能していたでしょう:

<script type="text/x-handlebars" data-template-name="main">
  {{#each main}}
    This is {{appName}}
  {{/each}}
</script>

のキーを解析して個々のレコードを識別するソリューションfind()は正しいです。これは、(すでに正しく述べたように)シングルトン(Ember.ObjectController)の作成を呼び出し、直接問い合わせることができるためです。

于 2013-05-11T23:12:13.453 に答える
0

これが正しいアプローチかどうかはわかりませんが、呼び出すことでこれを解決しました

App.Main.find("data");

/api/v1/main/dataサーバー側でルートを定義 します。

結果として、App.Main.find("data");レコードのリストから単一のレコードをフェッチするように機能しObjectControllermain

于 2013-05-11T16:18:31.890 に答える