首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用请求编写结构化Om应用程序,但不使用om.next

使用请求编写结构化Om应用程序,但不使用om.next
EN

Stack Overflow用户
提问于 2016-01-31 23:51:47
回答 2查看 226关注 0票数 1

我想用Om编写一个应用程序,特别是一个GitHub问题查看器。要从GitHub检索问题,我需要XHR请求它们,通过将请求发送回GitHub来将问题标记为“查看”。

关于在没有异步/http调用的情况下使用当前版本的Om有相当多的文档,使用Om.next的文档也比较多,但是我才刚刚开始,我觉得Om.next不是一个完整的ClojureScript新手可以深入研究的地方。

是否有文档和模式将当前稳定版本的Om (0.8.x)与远程资源一起使用,从而为这类应用程序提供了一个干净的架构?在生产中使用Om的大型应用程序,比如CircleCI --它们使用的是Om.next吗?如果没有,常见的请求模式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-04 09:12:15

我想,你可以跳到om的现实世界的例子里。他们正在使用谷歌闭包的XhrIo进行异步http调用。

代码语言:javascript
运行
复制
(defn edn-xhr [{:keys [method url data on-complete]}]
  (let [xhr (XhrIo.)]
    (events/listen xhr goog.net.EventType.COMPLETE
      (fn [e]
        (on-complete (reader/read-string (.getResponseText xhr)))))
    (. xhr
      (send url (meths method) (when data (pr-str data))
        #js {"Content-Type" "application/edn"}))))

用户更改时的通信服务器

代码语言:javascript
运行
复制
(defn on-edit [id title]
  (edn-xhr
    {:method :put
     :url (str "class/" id "/update")
     :data {:class/title title}
     :on-complete
     (fn [res]
       (println "server response:" res))}))

om.core/IWillMount上的数据加载

代码语言:javascript
运行
复制
(defn classes-view [app owner]
  (reify
    om/IWillMount
    (will-mount [_]
      (edn-xhr
        {:method :get
         :url "classes"
         :on-complete #(om/transact! app :classes (fn [_] %))}))
    om/IRender
    (render [_]
      (dom/div #js {:id "classes"}
        (dom/h2 nil "Classes")
        (apply dom/ul nil
          (map
            (fn [class]
              (let [id (:class/id class)]
                (om/build editable class
                  {:opts {:edit-key :class/title
                          :on-edit #(on-edit id %)}})))
            (:classes app)))))))

这不是您的问题的答案,但您可以深入研究om示例。

票数 1
EN

Stack Overflow用户

发布于 2016-02-01 21:17:21

CircleCI前端目前是用Om编写的,但是他们计划迁移到Om.next,它们解释了原因。

关于Om,有一个专门用于“习语与模式”的存储库,它是从教程部分链接的。我不会说任何东西都是用大理石写的,但要做好实验的准备。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35121004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档