1

我正在使用 Ember.js 1.0.0 RC1 和 ember-data 修订版 12

我有 PHP Slim 框架在后面,Ember.js 作为 UI。我想从 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 回答