gpt4 book ai didi

ember.js - 路由更改后,子 Controller 观察者仍处于事件状态

转载 作者:行者123 更新时间:2023-12-02 06:10:58 25 4
gpt4 key购买 nike

我目前正在使用 EmberJS 开发 map 应用程序,使用 ember-leaflet用于显示 map 。请参阅此 jsFiddle 了解我当前的设置:

http://jsfiddle.net/HUnnr/1/

我的问题是,我没有将点击事件委托(delegate)给 PlacesNewController , 仅当 /places/new路线是开放的。

我的第一次尝试
委派click来自 MapView 的事件-> PlacesController -> PlacesNewController ,但在我更改路线后,它也处理了点击事件并在 map 上添加了一个标记,因为 PlacesNewController还活着。

我的第二次尝试
然后我尝试了 Embers Evented混音。在我从 MapView 委托(delegate)事件之后-> PlacesController ,我触发了一个事件。我绑定(bind)PlacesNewControllerPlacesNewRoute.activate 上参加此事件并在 PlacesNewRoute.deactivate 上解除绑定(bind).主要问题是,我无法访问 PlacesNewController 的模型。从事件处理函数。

上述两种解决方案似乎都不是“ Ember 之道”。我认为这样的事情有更好的解决方案。也许有人可以帮我解决这个问题。我认为,类似于直接将 map 事件委托(delegate)给 PlacesNewController将是最干净的解决方案,但我不知道如何使用 Ember 实现这一目标。

编辑:
这是一个新的jsBin:
http://emberjs.jsbin.com/uHOPOfi/23/edit

主要问题是,如果您第一次访问 /places路线,正如预期的 zoom 的观察者和 isCloseEnough不被调用。之后你去/places/new观察员正在按预期工作。但是我不明白的是,为什么回到/places ,观察员和他们还有PlacesNewController还活跃吗?我以为 Ember

最佳答案

向 Controller 发送一个 Action 。

您可以通过 Controller 反弹 Action 。

(抱歉,切换到 jsbin,jsfiddle 不适合我的屏幕)

http://emberjs.jsbin.com/AguxORAD/3/edit

就我个人而言,我会放弃新的路由/ Controller ,这似乎很奇怪,因为所有真正的逻辑都存在于一些地方,你必须来回代理信息,但这取决于你。

关于ember.js - 路由更改后,子 Controller 观察者仍处于事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20588104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com