在学习Ember.js时,我正在帮助某人并构建一个非常简单的应用程序。
最终,这将由API提供,但API仍处于开发阶段,因此我试图弄清楚如何使用Fixtures with Ember Data来管理葡萄酒列表。
jsfiddle是http://jsfiddle.net/YvmzN/5/
我要做的是,当从列表中选择品种时,返回与该品种匹配的葡萄酒列表。但是,我没有得到任何输出。我从jsfiddle的网络检查员那里得到了一些非常奇怪的错误,但是我没有在本地得到任何错误,只是页面上没有出现任何葡萄酒。
我似乎无法弄清楚流程,我无法从我的控制器App.WineRoute.model
中输出
console.log(this),所以我甚至无法判断控制器是否是被触发(我猜它不是)。
有人可以指导我在这里做错了,也许可以解释一下Ember中发生的事情的结构以及你如何调试?
我以为它应该去路由器 - >路线 - >控制器 - >型号 - >控制器 - >查看,但我似乎无法正确追踪流量或查看为什么这不起作用。
正如JSfiddle中所提到的,我目前正在从本地JSON文件中提取葡萄酒列表,从长远来看,我将从API请求已经过滤的列表,但我仍然想知道在这一点上如何做到这一点。
答案 0 :(得分:2)
在您获得更多信息之前,这是答案的一部分:
为了真正正确使用Ember Data,每条记录都需要有一个id。
App.Wine.FIXTURES =[
{
id:0,
winery:"something hills",
designation:"label name",
varietal:"Merlot"
},
{
id:1,
winery:"something stream",
designation:"label name 2",
varietal:"Merlot"
},
{
id:2,
winery:"something grape",
designation:"label name 3",
varietal:"Syrah"
}
];
Ember Data在版本13和1.0 beta之间引入了一系列变化。这是一个很好的阅读(来自开发人员解释应该做什么不同)。
https://github.com/emberjs/data/blob/master/TRANSITION.md
适配器非常贴切,现在就是如何定义适配器
App.ApplicationAdapter= DS.FixtureAdapter;
我做了一些重大的重构,说实话,我对葡萄酒不是很熟悉,所以我可能会有一些错误的术语,或者关系,但这里有一个例子,你可以解决很多问题的。
正如一个有趣的旁注,如果你调用transitionTo / transitionToRoute并提供路线所需的模型,你就不会碰到模型钩子。如果你没有提供模型(或提供一个id)它将会在适用的路线中找到模型钩子(非常肯定有一个例子,我说过渡到葡萄酒,但只传递了品种的模型,因此它具有品种资源的模型,但不适用于葡萄酒资源,因此它会触及葡萄酒模型钩子。