Javascript can';t显示来自余烬数据的模型
我是usng Ember.js 1.0.0 RC1和Ember数据修订版12 我在后面有PHP Slim框架,并将Ember.js作为UI。我想从REST后端加载数据并将其列在模板中 这是我的代码:Javascript can';t显示来自余烬数据的模型,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我是usng Ember.js 1.0.0 RC1和Ember数据修订版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: '/sl
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>
但商店里什么也没有展示。我的问题是如何在我的把手模板中使用来自控制器的数据
谢谢阅读
解决方案
我不得不在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}}
要尝试的一件事是在模板中输出一个小写的“title”,因为您的模型将属性定义为以小写的“t”开头。感谢@nrion的快速回答。根据文档,setupController自动将“内容”设置为模型,除非被覆盖。尽管如此,我还是像你说的那样修改了代码。非常意外的是,它不起作用:(我很确定这是由于第12版。RC1对第11版没问题,但第12版不起作用!是否有关于余烬数据的文档?API或其他什么?如果调用controller.set('content',App.Ad.find())会发生什么直接在setupController挂钩中?我知道这不是您希望在生产中使用的方式,但要解决问题?我还没有尝试使用第12版,因此这可能是问题的一部分。再次感谢您的时间,nrion。我这样做时没有任何变化。当我尝试打印内容时,我得到:“。和App.Ad.find()。get('length')为0。但这可能是因为其异步且尚未填充。我将尝试在isLoadedAlso上执行此操作。您可能希望创建一个
App.AdsController=Em.ArrayController.extend
withcontent:[]
属性集。现在我很确定我的商店是空的。不知道为什么,tho。如果您能给我发送修订版11,我将不胜感激!谢谢您的回答Michal。我承认我的模板不够清晰。我只想打印我收藏中每个项目的任何内容。我编辑了代码来表达我的目标。这是一个棘手的错误因为控制台中没有错误消息。非常感谢。在JSON周围添加引号解决了这个问题!
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"}]}