1

次のconfig.jsがあります

require.config({
  baseUrl: "/static/js",
  paths: {
    jquery: "src/jquery-1.7.2",
    jqueryui: "src/jquery-ui-1.10.0.custom/js/jquery-ui-custom", 
    angular: "src/angular/1.0.4/angular",
    bootstrap: "bootstrap/js/bootstrap"
  },
  shim: {
    "jquery-validation-1.10.0/dist/jquery.validation.min" : {
        deps: ["jquery"],
        exports: "jquery.validation"
    }
  }
});

読み込んでいる js ファイル (という名前) で、 jquery 検証プラグインからメソッドを利用できるsignup.jsようにしようとしています。validate

# File signup.js

define(["jquery"], function($) {

$('#beta_signup_form button[type=submit]').attr("disabled", "disabled");

$('#beta_signup_form').validate({
    rules: {
        name: {
            required: true,
            minlength: 4
        },
        email: {
            required: true,
            email: true 
        }
    },
    focusCleanup: true,
    onkeyup: false,
    errorElement: "span",
      ... the rest of the code ...

コンソールに というエラーが表示されますUncaught TypeError: Object [object Object] has no method 'validate'

validateメソッドをsignup.jsスクリプトに渡すにはどうすればよいですか?

4

1 に答える 1

2

設定を少し調整する必要があります。通常、モジュールをシミングするときは、モジュールにもパスを指定する必要があります。

require.config({
  baseUrl: "/static/js",
  paths: {
    jquery: "src/jquery-1.7.2",
    jqueryui: "src/jquery-ui-1.10.0.custom/js/jquery-ui-custom", 
    angular: "src/angular/1.0.4/angular",
    bootstrap: "bootstrap/js/bootstrap",
    // Give validate a path
    "jquery-validate": "jquery-validation-1.10.0/dist/jquery.validation.min" 
  },
  shim: {
    // Now shim it
    "jquery-validate": {
        deps: ["jquery"],
        exports: "jquery.validation"
    }
  }
});


// Define it as a dependency. If the plugin doesn't return a value
// (most just augment the jQuery.fn) then no need to pass an argument 
// to your callback.    
define(["jquery", "jquery-validate"], function($) {
    // module code
});

プラグインが値をエクスポートしない場合は、コードをさらに短縮できます。

  shim: {
    "jquery-validate": ["jquery"]
  }

公式ドキュメントのその他の例-http://requirejs.org/docs/api.html#config-shim

于 2013-02-07T09:22:08.733 に答える