0

私のWebサイトには、さまざまな用途のJavaScriptファイルがたくさんありますが、ログインページに必要なのはjqueryloginValidateファイルだけです。を添付するときmain.jsは、条件を確認して、この2つのファイルだけをロードすることになっています。どうやってするか?

私の設定ファイル:

requirejs.config({
    baseUrl:"scripts",
    paths:{
        //libraries
        jquery          :"lib/jquery-1.9.0.min",
        jqueryUI        :"lib/jquery-ui-1.9.2.custom.min",
        underScore      :"lib/underscore-min",
        backBone        :"lib/backbone-min",
        //scripts
        appInit         :"js/tasklist",
        loginValidate   :"js/loginValidate"
    },
    shim:{
        "underScore":{
            exports: "_"
        },
        "backBone":{
            exports:"Backbone",
            deps:["underScore"]
        },
        "appInit" : {
            deps:["jquery","jqueryUI","underScore","backBone"]
        },
        "jqueryUI":{
            deps:["jquery"]
        },
        "loginValidate":{
            deps:['jquery']
        }
    }
});

ログインページでのみ必要です。

 require(["jquery","loginValidate"], function($,validate){
        how can i call the loginValidate function?
    });

loginValidate機能:

define(function(){

    var tasklistHandler = function (params) {
       //params take care.. to validate
    };

        $(function(){ // calling internally the function
            var paramsLoginForm = {
                loginForm : $('#tlLoginForm')
            }
        tasklistHandler(paramsLoginForm);
    });

    })

これは正しい方法ですか?他のページを利用するためにBackbone.jsも使用しています。どうすればそれらのページに進むことができますか?

4

1 に答える 1

0

あなたが抱えている問題は、「工場」関数(最後のスニペットの定義呼び出しに渡すコールバック関数)に「戻り」がないことです。

代わりに、次のようなものが必要です。

define(function(){
    return function (params) {
       //params take care.. to validate
    };
})

そして、require呼び出しでは、ファクトリ関数によって返される関数を実行します。

require(["jquery","loginValidate"], function($, validate){
    var paramsLoginForm = {
        loginForm : $('#tlLoginForm')
    }
    // \|/ that is what is returned by `define`'s callback function.
    validate(paramsLoginForm);
});
于 2013-02-06T05:28:06.857 に答える