我正在使用Ember. js 1.0.0 RC1和Ember数据修订版12
我在后面PHPSlim框架,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" }]}
看起来好像内容永远不会在控制器中设置。我怀疑如果您将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}}
我要拿回来的模型——包括一个身份证。
{"checks":[{"id":"512e0c6b1769d0805700000b","description":"xyz"}]}
要尝试的一件事是在模板中输出小写“title”,因为您的模型将属性定义为以小写“t”开头。