add accepts? method
还没有人认领这个 Issue。
评估
调研方向
从 HyperComponent 基类开始,检查现有的 fires 实现以及 accepts_list 的处理方式。添加 accepts?,使组件能够判断其父组件是否具有指定事件的处理器,然后验证在父组件没有处理器的情况下触发事件仍然不会引发错误。
由索引模型根据 Issue 内容生成。
描述
Its useful for a component to know if its parent is going to accept an event from the component.
fires :foo
...
... accepts? :foo # does my parent component have a foo handler?
Note that firing foo will NOT cause an error even if the parent has not handler, but it still might be useful to know (i.e. to control say a save button, but only if the parent is looking for you to do the save)
Can be added with the following patch in the HyperComponent base class:
class << self
def accepts_list
@accepts_list ||= {}
end
def fires(name, opts = {})
aka = opts[:alias] || "#{name}!"
name = if name =~ /^<(.+)>$/
name.gsub(/^<(.+)>$/, '\1')
elsif Hyperstack::Component::Event::BUILT_IN_EVENTS.include?("on#{name.event_camelize}")
"on#{name.event_camelize}"
else
"on_#{name}"
end
validator.event(name)
define_method(aka) { |*args| props[name]&.call(*args) }
accepts_list[opts[:alias] || aka.chomp('!')] = name
end
end
def accepts?(aka)
props[self.class.accepts_list[aka]]
end
- 主要语言
- JavaScript
- 星标
- 538
- 派生
- 41
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
hyperstack-org/hyperstack 的其他 Issue
-
enhancement needs doc
难度 2/5 1-3 小时 新手友好度 68/100
hyperstack-org/hyperstack#359 ·
-
难度 2/5 1-3 小时 新手友好度 68/100
hyperstack-org/hyperstack#267 ·
-
难度 5/5 一周以上 新手友好度 25/100
hyperstack-org/hyperstack#457 ·
-
难度 3/5 1-2 天 新手友好度 35/100
hyperstack-org/hyperstack#456 ·
-
难度 5/5 一周以上 新手友好度 15/100
hyperstack-org/hyperstack#455 · 2 条评论 ·
查看 hyperstack-org/hyperstack 的全部 Issue
相似的 Issue
-
ai-observability bug team/ai-observability
难度 2/5 1-3 小时 新手友好度 78/100
-
难度 2/5 1-3 小时 新手友好度 68/100
AllTheMods/ATM-10-L#19 ·
-
难度 2/5 1-3 小时 新手友好度 78/100
SignalK/n2k-signalk#345 ·
-
难度 2/5 1-3 小时 新手友好度 84/100
-
难度 1/5 1-3 小时 新手友好度 88/100
JuliaPluto/PlutoPlotly.jl#72 ·