我使用Ember.js 1.0.0 RC1和ember-data revision 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" }]}
但是商店里没有显示任何内容。我的问题是如何在我的车把模板中使用控制器中的数据?
阅读的Thx!
解
我不得不在JSON响应中添加引号
{"ads":[{ "title":"Title" },{ "title":"other title" }]}
答案 0 :(得分: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"}]}
答案 1 :(得分:0)
要尝试的一件事是在模板中输出小写的“标题”,因为您的模型将属性定义为以小写“t”开头。