4

它在标题中所说的。我有一个需要该功能的简单应用程序,但可以用普通的 clojurescript 编写,因此为此加载 jQuery 和 jQueryUI 似乎很浪费。

4

3 回答 3

2

google 闭包库中最接近 jQueryUI 的 Sortable 的是goog.fx.DragListGroup。据我所知,没有 ClojureScript 包装器,但直接针对它编写代码应该相当简单,而且由于它在闭包库中,它也应该优化得很好。基本思想是DragListGroup为每个要排序的独立列表实例化 a,然后使用 .将列表元素添加到该组中addDragList。如果您希望能够在列表之间拖动元素,还可以将多个列表元素添加到同一组。

于 2013-06-09T13:10:49.170 回答
2

这是实现此功能的一种方法。您需要使用外部文件,以便 Google Closure 可以读取 jQuery 库。已经发布了一个主要的 jQuery ,我发布了一个适用于 jQuery-ui 的 sortable 的。project.clj 应该有对 extern 的引用,所以包括如下内容:

:dependencies [[org.clojure/clojure "1.5.1"]
              [org.clojure/clojurescript "0.0-1806"]
              [jayq "2.3.0"]]
:plugins [[lein-cljsbuild "0.3.1"]]
:cljsbuild {
          :builds [
                     {:source-paths ["src"]
                      :compiler
                      {:output-to "resources/public/js/out.js"
                       :optimizations :advanced
                       :pretty-print false
                       :externs ["resources/public/externs"]}}]})

然后为 sortable 函数编写一些 cljs(jayq 让这变得简单):

(ns sortable.core
  (:use [jayq.core :only [$]]))

(defn sortable [$elem]
  (.sortable $elem))

(defn disable-selection [$elem]
  (.disableSelection $elem))

(let [$sortable ($ :#sortable)]
 (sortable $sortable)
 (disable-selection $sortable))

并为这样的项目包含一个 index.html 文件。

可能有一些方法可以直接使用 project.clj 中的 :foreign-libs 编译 jQuery 库,但我不知道该怎么做。

编辑:对不起,这仍然使用整个 jQuery 库,所以它并没有真正回答这个问题。

于 2013-06-13T08:14:23.137 回答
0

因为我对 clojurescript 一无所知,所以我无法在 clojurescript 中为您提供适当的解决方案,但 jQuery 和 jQuery UI 不应该那么浪费。

您可以通过使用Google CDN来包含 jQuery 库。许多网站都使用此源,因此文件会被缓存,不会一次又一次地下载。请参阅链接。

//you can of course easily change the version you want to use, like 1.9.1
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script

jQuery UI也可以这样做

<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>

但是,如果您只想使用sortablejQuery UI 的小部件,您可以简单地使用他们的Download Builder。只需取消选中“组件”下方的“全部切换”复选框,然后选中“交互”中的可排序复选框。下载您定制的 jQuery UI 版本,您只需要包含该jquery-ui-1.10.3.custom.min.js文件即可。Download Builder 也下载一个CSS主题,但对于可排序的小部件,我认为不需要包含它。

但实际上包括来自 Google CDN 的 jQuery UI 也是一个不错的选择。如果您在本地托管这些库,您的用户必须至少下载一次。如果您使用 Google,大多数用户将不需要下载文件。(除非版本不同)

如果 clojurescript 中没有任何内容可以帮助您,只是一个建议。

于 2013-06-08T13:54:48.917 回答