问题标签 [halogen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
404 浏览

purescript - Purescript 卤素组件,输入与状态

我想制作一个卤素组件,其中组件的输入与其状态不同。根据卤素指南(https://github.com/slamdata/purescript-halogen/blob/master/docs/5%20-%20Parent%20and%20child%20components.md#input-values)这应该是可能的. 我将指南中的示例更改如下

但是随后我在与, receiver: HHE.input HandleInput

我在这里做错了什么?

0 投票
1 回答
65 浏览

purescript - 从纸浆 psci 编辑和运行卤素应用程序

我正在开发一个生成可视化的小型 Purescript 应用程序。然而,我的架构有点非传统,而且我遇到了一些问题。这就是我想要的:

  1. 启动pulp psci -- --port 8080并连接浏览器
  2. 调用一个go接受可视化定义并将其与一些控件一起呈现的函数
  3. 查看结果。回到 REPL 并可能创建一些新定义。
  4. 转到第 2 步并使用 绘制新的可视化go

到目前为止,这种方法适用于我,但我的问题是重复调用go不会替换 DOM 的内容,而是添加到它们中。这意味着在几次调用之后,我最终获得了所有控件和所有内容的许多副本。

我意识到这有点 hack,但是我能想到的提供这种交互式界面的唯一其他方法是实现一个编辑器/解析器,而且工作量太大有没有办法避免这种情况?

这是我对 的定义go,我认为需要更改:

0 投票
1 回答
125 浏览

websocket - 在 PureScript 和 Halogen 中实现 websocket 重新连接的 EscapedSkolem 错误

我正在尝试在 PureScript 中实现 Websocket 重新连接,并且完全不知道如何继续。Aff由于使用;我在顶层添加了重新连接代码 我认为这是正确的地方,但我不确定。

我已经尝试在 Haskell 中实现它,但EscapedSkolem由于runWs. 我得到的印象是我可以通过添加类型签名来解决这个问题,但我一生都无法弄清楚签名可能是什么!

所以我有三个问题:

  • 这是实现重新连接的正确方法吗?
  • 是什么类型的runWs(关于我如何为自己解决这个问题的任何提示都会很棒)?
  • 如果添加类型签名不能修复EscapedSkolem错误,我将如何修复它?

最后,我是 PureScript 的新手,所以如果有任何不清楚的地方,请指出,我会尽力澄清。

编辑:添加了错误编译器输出并稍微更改了标题。

编译器输出是:

0 投票
1 回答
256 浏览

websocket - 获取网页的当前基本 URL

我正在运行一个由 F# 中的后端 Suave 应用程序提供的 PureScript 应用程序。在前端,我需要在 PureScript 中打开一个到后端的 WebSocket 连接,但部分路径需要根据后端应用程序的运行方式是动态的(例如,在某些盒子上它是:ws://host1:9999/ws/blah,在其他盒子上它可能是ws://host2:7777/ws/blah)。

所以我需要获取我的应用程序正在提供的当前 URL,以便我可以将 aws://放在前面,然后将 aws/blah放在最后(或者以某种方式做一个相对的 WebSocket 路径?)。

我试过做类似的事情:

但是给出的文档 URLhttp://在它的前面。我可以破解字符串并将那部分撕掉,但我希望找到一种更优雅的方式。

如果重要的话,我也在这里使用卤素,所以如果那里有对这种情况有用的东西,我可以访问他们的 API。

0 投票
1 回答
111 浏览

purescript - 页面上元素的 PureScript 卤素坐标

当我将鼠标悬停在触发此事件的页面上时,如何获取元素本身的坐标?在 purescript 中,有机会获取页面、屏幕和客户端坐标。是否可以知道鼠标下元素本身的坐标?

0 投票
1 回答
260 浏览

purescript - PureScript Halogen 如何创建触发每一帧的事件?

我需要在 Halogen 中做特定的动画。应该要求每一帧更新状态,以便正确绘制每一步。这种情况有没有订阅机制?我尝试使用 FRP.Event.TIme,但我不明白如何从订阅函数引发查询。

0 投票
1 回答
531 浏览

purescript - Purescript Halogen 在表单之外手动触发输入验证

我有已用required属性标记的输入字段,但无法找到触发验证检查的方法(我不在表单内工作,因此使用默认提交按钮操作对我不起作用)。

快速搜索显示了核心 html 元素类型的许多有效性函数,但我不确定如何将这些应用于卤素。

是否有某种方法可以触发 DOM 效果来检查页面上所有必需的输入并返回结果?

这是一个示例组件,显示了我要实现的目标

0 投票
1 回答
89 浏览

purescript - purescript 卤素:将 IProp 附加到 HTML

有没有办法追加IProp's HTML

这是我正在尝试做的一个例子:

哪里addProp需要myElement,给它Id(或任何其他任意属性)并返回这个基本相同但添加了新属性的新元素?

或者换句话说,这个功能是否addProp以某种方式存在?

0 投票
1 回答
223 浏览

events - 如何在 Purescript Halogen 中实现诸如自动增量计数器之类的东西

在 React 中给定一个非常简单的增量组件:

这如何转化为 Purescript 的卤素?在网上浏览了各种各样的东西,我还没有找到任何可以制作我自己原型的例子。我知道Effect.Time哪些暴露setInterval,但是我将如何使用它来触发可以让我更新状态的东西(在受控操作中,通过handleAction)。

我正在尝试将应用程序从 Elm 移至 Halogen,并且在该应用程序中,它依赖于subscriptions功能的关键位来更新与直接用户输入无关的应用程序状态。如果 Halogen 具有类似的功能(我已经看到subscribe,虽然这似乎与父/子组件之间的通信有关,但我可能误解了这一点......)最好指出它。

0 投票
1 回答
140 浏览

purescript - 如何使焦点组件在卤素中可组合

在 Halogen 中玩一个简单的演示应用程序,其中包含一个输入字段中的值填充的动态列表,我意识到,在单击按钮后将焦点返回到输入是非常困难的。只有一种方法:定义 FFI 方法,该方法通过 DOM id 发现元素并调用焦点。Halogen 在创建时不会公开 DOM 引用。

通过 id 定位 DOM 是一种有限的方法,并且无法自行扩展。DOM id 是页面全局的。它们打破了抽象和孤立。组件不可组合!

缺少 DOM 引用不仅会影响焦点,还会影响选择。

我猜卤素不会很快解决这个问题,所以我正在寻找一种解决方法。如何使组件,中继焦点,可组合?

我认为某种分层 id 生成器会有所帮助。它为 DOM 元素生成并分配唯一的 id,同时将它们暴露给组件逻辑。