标签: google-closure

使用Google闭包模板时,如何在Soy文件中迭代对象?

我想创建自己的模板,我可以传递一个对象,并让Soy模板迭代对象并拉出键和值.

如果我在JavaScript中有对象并调用Soy模板:

var obj = {'one':'a', 'two':b, 'three':c};
nameSpace.templateName({'paramValue': obj});
Run Code Online (Sandbox Code Playgroud)

我如何获得['one', 'two', 'three']价值?通常我会使用jQuery的each()功能,但我不知道如何在没有将对象转换为数组的情况下在Soy文件中做类似的事情.

我正在使用的对象具有已知的形式(没有嵌套对象,或者如果有的话,它们是提前知道并且已知的深度).欢迎使用嵌套对象的此答案或一般对象案例的答案.

{namespace nameSpace}

/**
 * Prints keys and values of the object
 * @param paramValue object with keys and values
 */
{template .templateName}
    {$paramValue[0]}    // undefined
    {$paramValue.Keys}  // undefined
    {$paramValue.keys}  // undefined
    {$paramValue.one}   // prints 'a'
    {foreach $val in $paramValue}
      // never reached
    {/foreach} 
{/template}
Run Code Online (Sandbox Code Playgroud)

javascript google-closure

14
推荐指数
1
解决办法
9738
查看次数

html5,带封闭编译器和/或闭包库的angularJS

我正在考虑用于数据绑定的html5,angularJS以及用于交互式Web应用程序的谷歌闭包编译器和闭包库.那些一起工作得很好吗?不幸的是,到目前为止似乎没有详细的报告.

我有adobe flex经验,但我对纯粹的js相当新.所以问题可以从初学者的角度来考虑.没有代码库需要移植,一切都将从头开发.

  1. 是否有其他人成功使用此组合?
  2. 有没有第一手报道?
  3. 您是否在此背景下推荐了各种技术,还是有更好的替代方案可以合并?
  4. 有没有好的例子,示例项目甚至教程(组合 - 而不是个别技术)?
  5. 初学者应该注意哪些陷阱?
  6. 我还应该使用或至少考虑其他任何正交技术吗?

我已经找到一些或多或少的相关链接:

javascript html5 google-closure angularjs

14
推荐指数
1
解决办法
6276
查看次数

如何使用Google的Closure编译JavaScript

谷歌刚刚发布了Closure,这是一个缩小JavaScript的编译器.

在产品网站上,它说"Closure Compiler也与Page Speed集成".

如何使用Page Speed通过Closure编译我的网页JavaScript?

(或者,是否有一个网站,我可以简单地粘贴在我的JavaScript中以关闭缩小它?

javascript minify google-closure google-closure-compiler

13
推荐指数
2
解决办法
2万
查看次数

Google Closure Editor/WYSIWYG

有没有人有使用Google Closure Editor/WYSIWYG的经验?我想从CKEDITOR转到Google Closure Editor/WYSIWYG.理想情况下,我喜欢使用以太网编辑器,但似乎没有人将编辑器与所有应用程序分开.

无论如何,对于Google Closure Editor/WYSIWYG,有谁知道,它是否支持Google Docs中的实时协作方面?

wysiwyg google-closure google-closure-library

13
推荐指数
2
解决办法
7190
查看次数

如何防止警告'属性MyProp1从未在MyObject上定义'?

我有一些包含JSON字符串的HTML.在on DOM ready回调中,我有这样的事情:

MyObject = JSON.parse($('#TheJsonString').html());
Run Code Online (Sandbox Code Playgroud)

后来在我的代码中,我写了一些东西:

var SomeVar = MyObject.MyProp1;
Run Code Online (Sandbox Code Playgroud)

然后,当我通过Google闭包编译器运行代码时,我收到警告

属性MyProp1从未在MyObject上定义.

如何编写代码以便它不会生成警告?

javascript google-closure google-closure-compiler

13
推荐指数
2
解决办法
7304
查看次数

如何为Google Closure编译器自动生成externs

假设您正在使用具有多个外部库依赖项的javascript项目,并希望使用Google Closure Compiler以ADVANCED_OPTIMIZATIONS模式编译源代码.

由于在此模式下编译器会将代码调用重命名为外部库对象和函数,因此必须提供externs,以防止发生此重命名.

但是,手动生成externs需要做很多工作,那么,从给定的javascript lib自动生成适当的extern的最佳方法是什么?

google-closure google-closure-compiler

11
推荐指数
1
解决办法
4700
查看次数

如何将自己的JavaScript库添加到ClojureScript?

我想使用ClojureScript编写Google Chrome扩展程序.使用ClojureScript,我可以使用所有Google Closure库,但这些库中不包含对Chrome浏览器的访问权限.所以我想在我自己的JavaScript库中包装所有Chrome内容.

到目前为止,我尝试创建自己的jar,它有一个JavaScript文件,只创建一个Foo对象并导出构造函数.我把这个jar添加到ClojureScript编译器的lib目录中(也有goog.jar),但到目前为止没有运气:

Exception in thread "main" java.lang.IllegalArgumentException: No implementation of method: :-compile of protocol: #'cljs.closure/Compilable found for class: nil
at clojure.core$_cache_protocol_fn.invoke(core_deftype.clj:494)
at cljs.closure$eval1056$fn__1057$G__1047__1064.invoke(closure.clj:187)
at cljs.closure$get_compiled_cljs.invoke(closure.clj:422)
at cljs.closure$cljs_dependencies.invoke(closure.clj:440)
at cljs.closure$add_dependencies.doInvoke(closure.clj:462)
at clojure.lang.RestFn.applyTo(RestFn.java:139)
at clojure.core$apply.invoke(core.clj:602)
at cljs.closure$build.invoke(closure.clj:701)
at user$eval1246.invoke(cljsc.clj:21)
at clojure.lang.Compiler.eval(Compiler.java:6406)
at clojure.lang.Compiler.load(Compiler.java:6843)
at clojure.lang.Compiler.loadFile(Compiler.java:6804)
at clojure.main$load_script.invoke(main.clj:282)
at clojure.main$script_opt.invoke(main.clj:342)
at clojure.main$main.doInvoke(main.clj:426)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:405)
at clojure.lang.AFn.applyToHelper(AFn.java:163)
at clojure.lang.Var.applyTo(Var.java:518)
at clojure.main.main(main.java:37)
Run Code Online (Sandbox Code Playgroud)

有人曾尝试过这个吗?

javascript clojure google-closure clojurescript

11
推荐指数
2
解决办法
1465
查看次数

如何在本地托管谷歌libphonenumber?

在我的localhost开发期间,我试图自己托管libphonenumber库.我正在尝试以下方面:

<script src="//closure-library.googlecode.com/svn/trunk/closure/goog/base.js"></script>
<script>goog.require('goog.proto2.Message');</script>
<script src="scripts/vendor/pn/phonemetadata.pb.js"></script>
<script src="scripts/vendor/pn/phonenumber.pb.js"></script>
<script src="scripts/vendor/pn/metadata.js"></script>
<script src="scripts/vendor/pn/phonenumberutil.js"></script>
<script src="scripts/vendor/pn/asyoutypeformatter.js"></script>
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我仍然依赖于外部托管的组件:闭包库.我尝试过使用closure-lite,它(显然,我是新来的)是一个非常完整的闭包库版本,可用于自托管.我尝试过以下操作:

<script src="scripts/vendor/closure-lite.js"></script>
<script>goog.require('goog.proto2.Message');</script>
<script src="scripts/vendor/pn/phonemetadata.pb.js"></script>
<script src="scripts/vendor/pn/phonenumber.pb.js"></script>
<script src="scripts/vendor/pn/metadata.js"></script>
<script src="scripts/vendor/pn/phonenumberutil.js"></script>
<script src="scripts/vendor/pn/asyoutypeformatter.js"></script>
Run Code Online (Sandbox Code Playgroud)

但是goog.proto2.Message没有.我收到以下错误:

Uncaught TypeError: Cannot read property 'Message' of undefined
Run Code Online (Sandbox Code Playgroud)

该错误来自phonemetadata.pb.js脚本:

goog.inherits(i18n.phonenumbers.NumberFormat, goog.proto2.Message);
Run Code Online (Sandbox Code Playgroud)

我能做些什么才能完全自我主持libphonenumber

google-closure google-closure-library libphonenumber

11
推荐指数
2
解决办法
6159
查看次数

如何:用于生成HTML的Closure模板,其中元素的属性值包含花括号

如何获取使用闭包模板创建的HTML?

<input name="fullName" class="large" type="text" data-validate="{required:true, minlength: 5, maxlength:100, messages:{required:'Please provide your Full Name.', maxlength:'This field can contain maximum 100 characters.'}}"/>
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

以下是我到目前为止所尝试的内容.

{namespace myApp.test}
/**
 * Template for UI of Create User View 
 * @param userToEdit It is the object returned from GET on User Resource.
 */
{template .testUser autoescape="false"}
  {{msg desc="<input id=\"fullName\" name=\"fullName\" class=\"large\" type=\"text\" value=\"{$userToEdit.FullName}\" data-validate=\"{required:true, minlength: 5, maxlength:100, messages:{required:\'Please provide your Full Name.\', maxlength:\'This field can contain maximum 100 characters.\'} }\" />"}}
{/template}
Run Code Online (Sandbox Code Playgroud)

返回Malformed attributes …

templates google-closure

10
推荐指数
1
解决办法
4172
查看次数

在嵌入式SVG中拖放事件?

是否有可能从网页中的SVG元素接收拖放事件?

我尝试了Google Closure库,但无济于事.

具体来说,假设我的页面包含

<ul id = "list">
  <li class="item" id="item1">foo</li>
  <li class="item">bar</li>
  <li class="item">baz</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我的脚本包含(Clojurescript/C2)

(let [items (select-all ".item")
      lst (select "#list")
      target (fx/DragDrop. lst nil)]
  (dorun (map
    (fn [item]
      (let [source (fx/DragDrop. item nil)]
        (. source (addTarget target))
        (. source (init))))
    items))
  (. target (init)))
Run Code Online (Sandbox Code Playgroud)

然后,我得到拖动图像(鬼),虽然我不设法接收例如通过做拖动事件

(on-raw "#item1" :dragstart (fn [e] (.log js/console (str "dragstart " e))))
Run Code Online (Sandbox Code Playgroud)

使用类似的SVG元素代码,我甚至没有鬼......

任何提示?

谢谢

svg drag-and-drop google-closure clojurescript

10
推荐指数
1
解决办法
1万
查看次数