把手无法正确渲染模型中的内容

时间:2014-05-06 05:41:25

标签: javascript ember.js handlebars.js

我在使用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>

设置了正确的标题,日期,作者和类别,但内容没有。

1 个答案:

答案 0 :(得分:3)

您可以通过多种方式正确显示内容:

<p> {{ content.content }} </p>
<p> {{ model.content }} </p>

{{#with model}}
  {{content}}
{{/with}}

http://emberjs.jsbin.com/pivet/1/edit

当您在模型钩子中返回数组或对象时,Ember会为每种情况自动生成ArrayControllerObjectController,并将您的模型内容分配给其内容属性。

在您的情况下,ObjectController继承了ObjectProxy,它将自己未定义的所有属性转发到其代理内容属性,但是内容属性未被代理。

由于这种代理功能,您可以读取两种格式的数据:

{{model.title}} === {{title}}

但是,它在您的内容属性中不起作用。