gpt4 book ai didi

ember.js - 捕获所有操作处理程序

转载 作者:行者123 更新时间:2023-12-02 21:59:13 24 4
gpt4 key购买 nike

现在,这确实是一个从 this 演变而来的问题。 。那里有更多的信息,但我想,最好直接问一个具体的问题。所以就这样:

我们通常在 Controller 中定义操作,如下所示:

var FooController = Ember.Controller.extend({
actions: {
login: function() {
}
}
});

有没有办法定义一个捕获所有操作处理程序,就像这样(假设):

actions: {
login: function() {
},
*: function(actionName, paramArray) {
}
}

这类似于 Ember catch all route我相信它已经实现了,尽管我还没有尝试过。

我需要这个,因为我的 Ember.Component 呈现用户提供的 partial template使用 {{partial}} 帮助器。该部分可能在其中指定了 {{action}}。这些操作不会冒泡到调用 Controller 或路由,并且会在组件内部丢失。 docs 中提到了这一事实。在第 4 段中。

如果可以实现捕获所有操作,我的组件可以实现它并使用如下方式将操作发送回调用者:

actions: {
*: function(actionName, paramArray) {
this.sendAction(actionName, paramArray)
}
}

最佳答案

Controller 、 View 和路由上的 actions 哈希的功能由操作处理程序 mixin [1] 提供。正如您所看到的,它注入(inject)了 send(actionName) 方法并使对象能够接收操作。现在,您可以轻松地覆盖此函数并捕获所有操作,而不是在 actions 哈希中查找它 - 这就是实现的作用。

[1] https://github.com/emberjs/ember.js/blob/v1.3.0/packages/ember-runtime/lib/mixins/action_handler.js#L8

关于ember.js - 捕获所有操作处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20988532/

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