我有一个包含以下字段的Post模型:
BlogApp.Post = DS.Model.extend({
author: DS.attr('string'),
title: DS.attr('string'),
preamble: DS.attr('string'),
content: DS.attr('string'),
created: DS.attr('date'),
comments: DS.hasMany('BlogApp.Comment'),
lastUpdate: DS.attr('date')
});
渲染后,结果将与Post.内容类似:
<BlogApp.Post:ember272:1>
其他字段渲染正常。我猜content
与某些内部属性冲突。我有几个问题:
1.当RESTAPI的名称与Ember内部冲突时,有什么解决方法吗?
1.是否还有其他我应该注意的禁用属性名称?
[更新]
名称冲突是与控制器冲突,而不是与模型冲突。这不是一个确定的列表,但要注意其他常见的数据库列名,如:
- 模型化
- 交易事项
- 是新的(_N)
- 已删除(_D)
- 贮藏
- 错误数
我猜Ember开发者不像这个可怜的Python开发者那样害怕与命名空间相关的错误。
顺便说一句,Angular.js的人说对了:它们总是在API属性和方法前面加上$
,从而有效地防止了这种错误。
3条答案
按热度按时间ff29svar1#
我试着回答你的两个问题:
1您可以为所有键定义Map,此处是
content
属性的示例2据我所知,在ember中没有这样的
explicit
保留名称列表,但根据经验,应该避免使用content
这样的通用名称(预防性地)希望能有所帮助
xyhw6mcr2#
我遇到了同样的问题,上面的解决方案对我不起作用。我使用ember 1.5和ember-data 1.0.0-beta.7+canary,我通过以下操作解决了这个问题:
ukxgm1gy3#
当我试图访问一个名为“namespace”的模型属性时,遇到了类似的问题。我在ember-cli 0.1.15中通过在模型的RestSerializer上设置attrs属性解决了这个问题。因此,对于上面的代码:
其中,“body”位于模型中,“content”位于REST服务器有效负载中。
有关详细信息,请访问http://emberjs.com/api/data/classes/DS.RESTSerializer.html#property_attrs