我有一个看起来像这样的方法:
def method(:name => nil, :color => nil, shoe_size => nil)
SomeOtherObject.some_other_method(THE HASH THAT THOSE KEYWORD ARGUMENTS WOULD MAKE)
end
Run Code Online (Sandbox Code Playgroud)
对于任何给定的调用,我可以接受任意值的任意组合.我喜欢命名参数,因为我可以查看方法的签名以查看可用的选项.
我不知道的是,如果上面的代码示例中有大写字母描述的快捷方式.
回到过去,它曾经是:
def method(opts)
SomeOtherObject.some_other_method(opts)
end
Run Code Online (Sandbox Code Playgroud)
优雅,简单,几乎作弊.
这些关键字参数是否有快捷方式,还是我必须在方法调用中重构我的选项哈希?
我正在尝试通过 .Stimulus 控制器监听 Select2 事件data-action。
我有一个刺激控制器,其中包含了 Select2 事件的事件侦听器,但我无法侦听 HTML 中的 Select2 事件。
import { Controller } from 'stimulus';
export default class extends Controller {
initialize() {
const $element = window.$(this.element);
$element.select2({
});
$element.on('select2:select select2:unselect', (_event) => {
this.element.dispatchEvent(new Event('change'));
});
}
}
Run Code Online (Sandbox Code Playgroud)
我必须使用 Stimulus 属性监听“change”事件data-action,而不是“select2”事件。以下代码有效。通过收听data-action-"select2:select"不起作用。
<%= f.select :name, ['name1', 'name2'], data: {'controller' => 'select2'} %>
Run Code Online (Sandbox Code Playgroud)
我想监听具有该data-action属性的事件,因为旨在使用刺激。
我可以使用 Stimulus 监听 Select2 事件吗?