在我的网站上,我有大量JavaScript文件,所有这些文件都有不同的用途,但登录页面只需要jquery
和loginValidate
个文件。当我附加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来利用其他一些页面;我该如何处理这些页面?
答案 0 :(得分: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);
});