最近我试图在Ember中渲染子模板时遇到了很多麻烦。下面的jsbin不起作用,因为我正在尝试使用REST适配器而无法弄清楚如何让mockjax和ember一起工作 - 无论如何,我认为REST适配器对问题至关重要,因为我会说明。
所以我有联系项目。我可以看到ember调用我的/ api / contacts路由来获取所有联系人列表的模型。在此之后,我正在尝试创建指向单个联系人的链接,并在同一模板中进行渲染。换句话说,我仍然会看到联系人列表,但我也看到了我刚刚点击的个人联系信息。该个人联系人包含许多contactPoints。基本上,发生的事情是我从未看到过ember寻找contactPoints。我看到“联系人”模板渲染,但它从来没有任何contactPoints。
如果不清楚,我可以澄清一下。但下面的链接应该有所帮助。谢谢!
答案 0 :(得分:1)
我简化了你的JsBin以突出解决方案
http://emberjs.jsbin.com/xacuyalu/7
根据您的目标,您无需为出口命名。
代码中的主要问题是在循环和模板中使用变量的方式。
在您的contacts
模板中,您可以编写
{{#each contact}}
但是在传递值
时忘记使用contact
作为变量
同样,在contact
模板中,您使用了不存在的contactItem
。您可以在此处使用模型的属性。
mockajax
的问题是您嘲笑/api/contacts
而不是/contacts
的网址。这适用于我修改过的JsBin。
另请注意,您的有效负载不适用于contactPoints
编辑:我已更新JsBin以显示联系点。
http://emberjs.jsbin.com/xacuyalu/9
首先,我建议你阅读https://github.com/emberjs/data/blob/master/TRANSITION.md。它将向您展示如何准备您的数据以便与Ember Data很好地协作。
我已将您的有效负载提取为更具可读性。以下是我所做的事情:
contactPointsIds
更改json中属性的名称
到contactPoints
address
型号ContactPoint
属性
Contact
模型上的属性从contactPoint
重命名为
contactPoints