0

在我的网站上,我有一堆 JavaScript 文件,所有这些文件都用于不同的用途,但登录页面只需要jqueryloginValidate文件。当我附加我的main.js时,假设通过检查条件仅加载这两个文件。怎么做?

我的配置文件:

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 回答