【问题标题】:make parsley.js work with require.js使 parsley.js 与 require.js 一起工作
【发布时间】:2014-08-12 00:01:37
【问题描述】:

我试过了:

require.config({
    paths: {
        jquery: '../lib/zepto/zepto-1.1.3', 
        "jquery.parsley": '../lib/parsley/parsley-2.0.2'
    },
    shim: {
        'jquery.parsley': ['jquery']   // I also tried without this
    }
});

define(['jquery', 'jquery.parsley'], function( $ ) {
    $("#signup-form").parsley('validate'); // "signup-form" is the form id
});

但我收到此错误:

TypeError: $(...).parsley is not a function

我做错了什么?你能帮我让它工作吗? 谢谢

【问题讨论】:

  • 您需要在函数中包含 ALL 您的依赖项作为参数。您只对 jQuery 这样做,而不是对欧芹这样做。只需将其更改为:define(['jquery', 'jquery.parsley'], function( $, parsley ) {
  • @Tyblitz 好的,谢谢,但它不起作用。同样的错误!
  • 经过进一步检查,(1)您忘记了注册表单选择器中的#,并且(2)似乎文档说 jQuery 不需要加载 shim(它没有我也可以完美地工作)。通常,如果您谨慎遵循,文档的这一部分应该会解释您需要的所有内容:requirejs.org/docs/api.html#config-shim
  • 好的,我编辑了代码并尝试了,但同样的事情。它无法识别parsley 函数
  • 啊哈!我认为这篇文章可能会对您有所帮助:stackoverflow.com/questions/17366073/…。如果这不起作用,抱歉,我想不出更好的方法

标签: javascript validation requirejs parsley.js


【解决方案1】:

Parsley 2.0.2 不需要shim,因为它调用define。见the source

if (typeof define === 'function' && define.amd) {
  // AMD. Register as an anonymous module depending on jQuery.
  define(['jquery'], factory);
} else {

它调用define,所以没有shim。你已经为它定义了一个shim。使用 shim 加载不需要 shim 的模块会导致未定义的行为。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,但我发现 Parsley 依赖于 Jquery,所以在你的 shim 配置中你应该写:

    paths: {
           "jquery" : "../libs/jquery/jquery-1.11.0.min",
           "parsley" : "../libs/parsley/parsley.min",
    }
    
    shim: {
    
           "parsley": {
                        "deps" : ["jquery"],
                        "exports" : "parsley"
          }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-09-13
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      • 2013-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多