标题中的内容。我有一个需要这个功能的简单应用程序,但是可以用普通的clojurescript编写,所以加载jQuery和jQueryUI似乎相当浪费。
答案 0 :(得分:2)
谷歌关闭库中与jQueryUI的Sortable最接近的是goog.fx.DragListGroup。据我所知,没有ClojureScript包装器,但直接对它进行编码应该相当简单,因为它在闭包库中也应该很好地优化。基本思想是为每个要排序的独立列表实例化DragListGroup
,然后使用addDragList
将列表元素添加到该组。如果希望能够在列表之间拖动元素,也可以将多个列表元素添加到同一组中。
答案 1 :(得分:2)
以下是实现此功能的一种方法。您需要使用extern文件,以便Google Closure可以读取jQuery库。主jQuery already published有一个,我发布了一个效果很好的for jQuery-ui's 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"]}}]})
然后为可排序函数编写一些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))
并为项目like this添加index.html文件。
可能有一些方法可以直接编译jQuery库:project.clj中的foreign-libs,但我不知道该怎么做。
编辑:对不起,这仍然使用整个jQuery库,所以它并没有真正回答这个问题。答案 2 :(得分:0)
因为我对clojurescript一无所知我无法在clojurescript中给你一个合适的解决方案,但是jQuery和jQuery UI不应该那么浪费。
您可以使用Google CDN来包含jQuery库。许多网站使用此源,因此文件被缓存,不会一次又一次地下载。 请参阅this链接。
//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
完成same<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
但是如果你只想使用jQuery UI的sortable
小部件,你可以简单地使用他们的Download Builder。
只需取消选中“组件”下方的“全部切换”复选框,然后选中“交互”中的可排序复选框。
下载您自定义的jQuery UI版本,您需要包含的是jquery-ui-1.10.3.custom.min.js
文件。下载构建器也会下载CSS
主题,但对于可排序的小部件,我认为不需要包含它。
但实际上包括来自Google CDN的jQuery UI也是一个不错的选择。如果您在本地托管库,则用户必须至少下载一次。如果您使用Google,大部分用户都不需要下载文件。 (除非版本不同)
如果clojurescript中没有任何内容可以帮助你,那么只是一个建议。