gpt4 book ai didi

jquery-ui - 在 ClojureScript 中使用 jquery-ui 和 jayq

转载 作者:行者123 更新时间:2023-12-05 00:33:48 26 4
gpt4 key购买 nike

我正在尝试使用 jayq 和 jquery.ui.sortable 在页面上创建一个列表
可排序的。看着 http://jqueryui.com/demos/sortable/看起来应该是这样
简单如:

(.sortable ($ :#sortable))

编译为:
jayq.core.$.call(null, "\ufdd0'#sortable").sortable();

并抛出:
Uncaught TypeError: Cannot call method 'call' of undefined

当我尝试将其包含在页面中时。有趣的是,生成的代码
当我将它粘贴到 js 控制台时,它确实在页面中工作,这意味着
对我来说,在执行该行之后会加载一些必要的东西。

我修改了
(def cljs-options {:advanced {:externs ["externs/jquery.js"]}})


(def cljs-options {:advanced {:externs ["externs/jquery.js" "js/ui/jquery-ui.js]}})

看完后
http://lukevanderhart.com/2011/09/30/using-javascript-and-clojurescript.html
,这似乎还不够。我猜是 jquery.ui
修改 $ Prototype,但我不确定如何在
clojurescript

我也在使用 noir 和 noir-cljs,如果有什么不同的话。

看着 using jQueryUI with closure compiler可能只是 jquery-ui 需要一个手工制作的 externs 文件才能使用,这可能是一项重大任务。有人可以确认吗?

最佳答案

解决这个问题有两个不同的方面。

  • 要在高级模式下编译,我需要将以下内容添加到我的 externs 文件中。
    $.prototype.sortable = function (a,b) { };
    $.prototype.disableSelection = function (a,b) { };
  • 我正在使用 noir-cljs,在我的 View 模板中,有以下内容:
    (:require [noir.cljs.core :as cljs])
    (:use [hiccup.page :only [include-js]])
    ...
    (cljs/include-scripts :with-jquery)
    (include-js "/js/jquery-ui.js")

  • 但这永远行不通,因为需要在 jquery 之后但在生成的 ClojureScript 之前包含 jquery-ui 代码。解决方案是在页面中手动包含库:
    (include-js "/js/jquery.js")
    (include-js "/js/jquery-ui.js")
    (include-js "/cljs/bootstrap.js") ;; Generated

    关于jquery-ui - 在 ClojureScript 中使用 jquery-ui 和 jayq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11570334/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com