在Ember.js中挣扎着夹具数据 - 加上如何在ember中输出它

时间:2013-10-01 03:33:30

标签: ember.js

在学习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请求已经过滤的列表,但我仍然想知道在这一点上如何做到这一点。

1 个答案:

答案 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;

我做了一些重大的重构,说实话,我对葡萄酒不是很熟悉,所以我可能会有一些错误的术语,或者关系,但这里有一个例子,你可以解决很多问题的。

http://jsfiddle.net/YvmzN/7/

正如一个有趣的旁注,如果你调用transitionTo / transitionToRoute并提供路线所需的模型,你就不会碰到模型钩子。如果你没有提供模型(或提供一个id)它将会在适用的路线中找到模型钩子(非常肯定有一个例子,我说过渡到葡萄酒,但只传递了品种的模型,因此它具有品种资源的模型,但不适用于葡萄酒资源,因此它会触及葡萄酒模型钩子。