我在使用Ember模型渲染内容时遇到了一些问题。这是一个“新闻”模型,我试图展示它的内容;它是HTML文本,所以当我在模板中渲染它时,我尝试使用三重花括号,但没有显示任何内容。当我只使用正常的双括号时,我得到的是:
<App.News:ember291:14>
而不是模型中的实际内容。我已经使用Ember chrome扩展程序进行了检查,数据在模型中确实存在。
这是我的模型,路线和模板。
MODEL
App.News = DS.Model.extend({
title: DS.attr('string'),
content: DS.attr('string'),
date: DS.attr('date'),
author: DS.attr('string'),
category: DS.attr('string'),
summary: DS.attr('string')
});
ROUTE
App.NewsItemRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('news', params.id);
}
});
TEMPLATE
<h1>{{ title }}</h1>
<small>{{format-time date}} by {{ author }} in {{ category }}</small>
<hr/>
<p> {{ content }} </p>
设置了正确的标题,日期,作者和类别,但内容没有。
答案 0 :(得分:3)
您可以通过多种方式正确显示内容:
<p> {{ content.content }} </p>
<p> {{ model.content }} </p>
{{#with model}}
{{content}}
{{/with}}
http://emberjs.jsbin.com/pivet/1/edit
当您在模型钩子中返回数组或对象时,Ember会为每种情况自动生成ArrayController或ObjectController,并将您的模型内容分配给其内容属性。
在您的情况下,ObjectController继承了ObjectProxy,它将自己未定义的所有属性转发到其代理内容属性,但是内容属性未被代理。
由于这种代理功能,您可以读取两种格式的数据:
{{model.title}} === {{title}}
但是,它在您的内容属性中不起作用。