1

私はEmber.js1.0.0RC1とember-dataリビジョン12を使用しています

背面にPHPSlimフレームワークがあり、UIとしてEmber.jsがあります。RESTバックエンドからデータをロードしてテンプレートにリストしたい。

だからここに私のコードがあります:

 window.App = Ember.Application.create();

// Store
App.Store = DS.Store.extend({
    revision: 12,
});

// Adaper
DS.RESTAdapter.reopen({
  url: '/slim'
});

// Router
App.Router = Ember.Router.extend();
App.Router.map(function(){
    this.route('ads', {path: '/ads'});
});

// Ad model
App.Ad = DS.Model.extend({
    title: DS.attr('string')
});

// AdsRoute
App.AdsRoute = Ember.Route.extend({
    model: function(){
        return App.Ad.find();
    }
});

次に、テンプレートのストアからモデルをレンダリングしようとします。

<script type="text/x-handlebars" data-template-name="ads">
<h1>Ads</h1>
{{#each controller}}
    {{title}}
{{/each}}
</script>

バックエンドからの応答:

{ads:[{title:"Title" },{ title:"other title" }]}

ただし、ストアからは何も表示されません。私の質問は、ハンドルバーテンプレートでコントローラーからのデータをどのように使用する必要があるかです。

読んでくれてありがとう!

解決

JSON応答の前後に引用符を追加する必要がありました

{"ads":[{ "title":"Title" },{ "title":"other title" }]}
4

2 に答える 2

0

コンテンツがコントローラーに設定されていないように見えます。setupController フックを App.AdsRoute に追加すると、アイテムがコントローラーに配置されるのではないかと思います。

setupController: (controller, model) ->
        controller.set('content', model)

現在使用しているリビジョン 11 アプリの実際の作業コードを含めています。したがって、モデル名は一致しませんが、コードは機能しています。

App.ChecksIndexController = Ember.ArrayController.extend
  content: []

App.ChecksIndexRoute = Ember.Route.extend
  enter: ->
    console?.log("Checks Index Route a")
  model: ->
    App.Check.find()
  setupController: (controller, model) ->
    @._super()
    console?.log('route setupController')
    console?.log(model)
    controller.set('content', model)


{{#each item in controller }}
        {{#linkTo checks.show item }}
          <div class="well well-small well-trim-border">
            <h4>{{item.description}}</h5>
          </div>
        {{/linkTo}}
      {{/each}}

私が戻ってきたモデルにはIDが含まれています。

{"checks":[{"id":"512e0c6b1769d0805700000b","description":"xyz"}]}
于 2013-03-16T13:09:01.583 に答える
0

モデルでは小文字の「t」で始まるプロパティが定義されているため、テンプレートで小文字の「タイトル」を出力してみてください。

于 2013-03-16T13:15:59.437 に答える