问题标签 [secretary]
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.
clojure - Clojurescript + Om:等待状态改变,然后做一些事情
我正在尝试制作一个显示食谱的 Clojurescript 应用程序。
相关代码如下(也可作为 gist获得):
我想要完成的事情:
- 首先使用异步 http 调用获取食谱。我正在使用返回通道的 cljs-http.client
- 使用秘书库定义路线。在 /random 路线中,我想选择一个随机配方。这只会在数据已被获取并已在应用程序原子中更新时发生。
我现在得到的是浏览器中的无限循环。发生了什么?
另一种选择是将我所有需要首先获取数据的路线包装在一个 go 块中并放在(<! (load-recipes))
第一行。
PS:我结束了
clojure - Clojure 秘书 - 关于 URL 更改的调度
秘书可以根据提交的浏览器 url 调度路由吗,许多 javascript 路由框架的工作方式?我似乎找不到任何将其连接起来的示例。
例如,当您在浏览器的 url 中输入http://myapp.com/#/my/route时,我希望它像我以编程方式输入 (secretary/dispatch! "/my/route") 一样发送复制品
clojurescript - 如何在 clojurescript 中获取查询参数?
我正在使用秘书和试剂。这是我的代码:
忽略 :prefix 值(我尝试了“”、“#”并且根本没有设置 :prefix)此代码仅适用于以下路由:
但它不适用于以下路线:
我实际上想要实现的是解析来自朋友的登录失败,如果失败将我重定向到
并向用户显示登录失败消息。我不需要为此使用秘书,任何可以解析查询参数的东西对我来说都可以。
困难的方法是解析我可以得到的查询字符串:
我相信这在某些图书馆已经做得很好了。
clojure - 在 ClojureScript 中,为什么我不能导航到手动输入的 URL,但是如果我单击一个链接它可以工作?
(注意,我使用的是 Reagent、Secretary 和 Compojure(以及其他))
我想创建一条路线/sectest/:id
,如果我将浏览器指向该路线,我会收到以下错误:
Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:3449/sectest/css/site.css".
asdf:1
Refused to execute script from 'http://localhost:3449/sectest/js/app.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.
但是,如果我单击浏览器中导航到该路线的链接,它就可以正常工作...
这是相关的代码:
客户端:
服务器端:
因此,以下链接将我带到my-page
,并且控制台打印"Hi asdf"
得很好:
但是如果我输入http://localhost:3449/sectest/asdf
,我会得到一个错误,而且我似乎无法追踪它。我怀疑这可能与试图查找位于 , 的资源的代码有关/sectest
(它不应该),但我无法确认这一点或弄清楚如何使用它......我是clojure 的新手,如果我在某些方面非常无知,请原谅,有什么想法吗?
clojurescript - om.next 中的秘书路由、Ident 查询
在开始这个问题之前,我会说在 Clojure/Script 方面我仍然是一个新手,所以除了非常尖锐的问题之外,我将提出关于样式的任何一般性反馈,非常感谢使用。
我一直在用 om.next 构建一个非常简单的应用程序。对于客户端路由,我决定使用秘书。我的应用程序显示一个项目列表,目的是当您单击其中一个项目时,您可以查看详细信息。目前的实现是通过一个简单href
的锚标记(例如,一个href
可能看起来像/items/1
,在哪里1
)id
。这部分是因为您应该能够直接导航到详细信息 URL 以查看相同的视图。听起来很简单,但我这辈子都无法让它按要求工作。
首先,让我们看一下协调器的显着配置(为简洁起见,我已经删除了组件的实现细节render
)......
精明的人会发现我正在尝试使用 links 进行思考,而这似乎正在按我的预期工作。当我添加这个组件并尝试在秘书路由后面使用它时,一切都崩溃了......
我的组件的实例Item
没有收到props
查询中指定的正确状态(它收到完整的app-state
)。最让我困惑的是,如果我app-state
在 REPL 中手动执行相同的查询,我会得到正确的数据集......
到目前为止,唯一对我有用的是绕过协调器(自己创建组件实例),将查询值app-state
作为道具传递。但这意味着我不能通过调和器来改变状态,这是一个新的可怕的皱纹,对一个原本凌乱、蓬乱的难题来说是一个新的可怕的皱纹。
我在这里想念什么?虽然我有很多想法,但我最怀疑的是app-state
via的初始化om/tree->db
。
clojurescript - 获取所有命名路由
我目前正在学习它reagent
的secretary
路线。我发现我可以用likequery-params
来获取所有参数的哈希图question mark (?)
?name=Daniel
我不知道如何将id
参数传递给 a defmethod
,所以我希望它保存在一个原子中,所以我想知道如何获取包含所有命名参数的哈希映射,http://0.0.0.0:3449/#/about/black/12
例如{:path "black" :id "12"}
clojurescript - 页面加载时未触发 defroute
我的routes.cljs
文件中定义了应用程序路由,位于src/cljs/project/routes.cljs
.
它被初始化为core.cljs
它被发送::events/set-active-panel
到events.cljs
并且:active-panel
订阅了subs.cljs
我订阅:active-panel
了我的layout.cljs
@active-panel
是nil
我第一次访问页面的时候。仅当我浏览页面时才调度面板。我知道这最初是有效的。我在我的提交中看不到任何可能破坏它的东西。
如何让我defroutes
在页面加载以及通过网站导航时触发?