0

我正在尝试按照http://emberjs.com/guides/outlets/#toc_transitions-and-urls上的指南让 ember 路由工作 我在 1.0.pre

但是,我在模板栏中定义操作时遇到了困难。

当我尝试从模板栏中单击“阅读文章”时发生错误,它试图在我的视图中找到一个 showPost 函数,而不是使用路由器,我应该使用什么目标作为目标?我是否也正确设置了上下文?

错误:断言失败:目标 <(Ember.View 的子类):ember337> 没有动作 showPost

编辑: 有错误的项目在 https://github.com/newtonianb/todomvc/tree/master/dependency-examples/emberjs_require

4

1 回答 1

2

当您的视图没有控制器和路由器来发送操作时,就会发生这种情况。您可以通过访问路由器来验证您的视图控制器和路由器是否controller存在controller.target

实际上,查看您的代码,我不希望路由器存在,因为您正在手动创建控制器。控制器需要了解路由器,以便向其发送事件。

controller.connectOutlet({
  viewClass: PostsView,
  controller: PostsController.create(), // no target!
  context: context
})

默认情况下,Ember 会在您的应用程序初始化时为您连接所有这些。这是您的控制器实例化的地方。

实际上,将上面的内容更改为类似的内容应该可以解决您的问题。

controller.connectOutlet({
  viewClass: PostsView,
  controller: router.get('postsController'), // this guy has target
  context: context
})

如果这仍然不起作用,请您发布一个 jsfiddle,以便我们一起编辑它。

于 2012-09-24T16:47:34.937 回答