Ember.js在处理View事件后转换到路由

时间:2013-11-21 11:39:18

标签: javascript ember.js

设定:

我有一个Ember应用程序,支持使用Imgur API上传图片。

我已经有一个工作路线和模板来处理任何Imgur ID,但我希望在上传新图像后转换到此路线(使用返回的Imgur ID)

以下是该应用的相关部分:http://jsbin.com/iGOXivEW/2/edit

问题:

  1. 这是否正确使用了View以及处理更改事件的正确方法?
  2. 如何从View转换到'imgur'路线并将新的Imgur ID传递给它?

1 个答案:

答案 0 :(得分:5)

您可以在视图中处理ui事件,这很好。你可以通过移动将图像发布到控制器的代码,从视图逻辑中分离发送到igur或其他地方的逻辑。

可以通过从视图

调用来完成转换

this.controller.transitionToRoute('imgur', imgurId);

或者如果您将所有内容移动到控制器,

transitionToRoute('imgur', imgurId);

http://emberjs.com/api/classes/Ember.Controller.html#method_transitionToRoute

设计明智,无论发布图像的逻辑在何处,如果您将转换逻辑移动到公共位置(即控制器)或者甚至更好地将路径移动到特定操作(即已完成)内,您可能会发现有用。

这样你总能在哪里维护处理当前路线导航的逻辑。要在控制器中调用操作或从视图或控制器路由,您需要使用函数send,即在视图this.controller.send('completed')内,在控制器this.send('completed');内。需要将操作放在操作对象中。

http://emberjs.com/guides/views/handling-events/