2014-01-08 27 views
4

如何从不属于RouteController的JavaScript函数内转换Ember.js应用程序?我可以直接使用Ember.Application实例调用类似route.transitionTo()controller.transitionToRoute()的东西吗?从JavaScript转换Ember.js应用程序

我想要做的是将amMap集成到Ember.js应用程序中,这样当点击地图上的某个区域时,应用程序就会转换到适当的状态。

Here's an example jsFiddle。当从列表中选择一个大陆时,在地图上选择该大陆。我想反也发生了,我该怎么办下面的听众:

map.addListener("homeButtonClicked", function() { 
    // how can I transition to index from here? 
    // similar to this.transitionTo("index") from a route or 
    // this.transitionToRoute("index") from a controller 
    alert("Transition to index"); 
}); 
map.addListener("clickMapObject", function (e) { 
    // how can I transition to continent from here? 
    // similar to this.transitionTo("continent", id) from a route or 
    // this.transitionToRoute("continent", id) from a controller 
    alert("Transition to continent: " + e.mapObject.id); 
}); 
+0

我的答案是否适合你?如果是这样,我会欣赏赏金。 :) – Ben

回答

3

啊,但为什么当你可以有更多的乐趣全局函数做到这一点做的“余烬方式” :)

您最好将地图div移动到模板中,并创建一个“IndexView”,并在didInsertElement()方法中为地图视图添加事件处理程序。这是一个工作的emberjsbin:http://emberjs.jsbin.com/EsAkAVE/1/edit

+1

谢谢,这帮助我朝着解决方案。我最终将地图包装在一个组件中,该组件在单击区域时触发一个动作,并从控制器处理该动作。作为奖励,我没有地图的全局变量了。 – imgx64

相关问题