Requirejs 需要在html脚本标记中定义js模块
我试图在html中的脚本标记中为我的应用程序的初始配置选项定义一个模块。但我得到了以下错误:Requirejs 需要在html脚本标记中定义js模块,requirejs,Requirejs,我试图在html中的脚本标记中为我的应用程序的初始配置选项定义一个模块。但我得到了以下错误: Error: Module name "options" has not been loaded yet for context: _. Use require([]) http://requirejs.org/docs/errors.html#notloaded 以下是html: <script src="Scripts/require.js" data-main="/Recruiter/te
Error: Module name "options" has not been loaded yet for context: _. Use require([]) http://requirejs.org/docs/errors.html#notloaded
以下是html:
<script src="Scripts/require.js" data-main="/Recruiter/temp-search/App/main"></script>
<script>
define('options',['jquery'],function($) {
return options = {
salesPhoneNumber : '@ConfigurationManager.AppSettings.Get("SalesPhoneNumber")',
saleInfoMessage : "To access Temp Search candidate details, please call our team on " + salesPhoneNumber,
subscriptionInfo : @Html.Raw(new JavaScriptSerializer().Serialize(Model.AccessInfo ?? null)),
questionProLink: src="@(Request.Url.Scheme)://www.questionpro.com/a/TakeSurvey?id=@(Model.IsRecCon ? AppSettings.SurveyRecConId : AppSettings.SurveyOthersId)&custom1=@Model.RecruiterEmail&custom2=@Model.RecruiterId",
surveyEnabled: '@AppSettings.FlexSurveyEnabled',
whatsNewUrl: '@AppSettings.UrlWhatsNew',
salesPhoneNumber:salesPhoneNumber,
showSaleInfo: '@ViewBag.ShowSaleInfo',
fileDownloadFailCookieName:'@AppSettings.FileDownloadFail',
urls: {
signInUrl: '@string.Format("https://{0}/recruiter/account/signIn", Url.RequestContext.HttpContext.Request.Url.Host)',
signInTempsHome: '/recruiter/temp-search/home',
signInTempsSearch: '/recruiter/temp-search/api/temps',
checkAvailabilityUrl: '/recruiter/temp-search/api/availability',
searchUrl: '/recruiter/temp-search/api/temps/search',
accesslimitUrl: '/recruiter/temp-search/api/ecruiters/accessinfo',
previewUrl: '/recruiter/temp-search/api/temps/preview'
},
elements: {
signInRegisterDialog: $("#signInRegisterDialog"),
noSubscriptionDialog: $("#noSubscriptionDialog"),
searchForm: $("#searchForm"),
searchKeywords: $("#Keywords"),
searchLocation: $("#Location"),
searchRadius: $("#Radius"),
searchSortBy: $("#sortBy"),
searchTemp: $("#Temporary"),
searchContract: $("#Contract"),
searchPayRateFrom: $("#PayRateFrom"),
searchPayRateTo: $("#PayRateTo"),
searchAvailability: $("#AvailabilityConfirmed"),
locationErrorMsg: $("#locationErrorMsg"),
checkAll: $(".checkAll"),
checkCandidate: $(".checkCandidate"),
availability: {
availabilityBtn: $("#availabilityBtn"),
availabilityDialog: $("#availabilityDialog"),
additionalInformation: $("#AdditionalInformation"),
jobPosition: $("#JobPosition"),
jobLocation: $("#JobLocation"),
payRate: $("#JobPayRateFrom"),
payRateTo: $("#JobPayRateTo"),
startOn: $("#StartOnDate"),
duration: $("#Duration"),
checkAvailabilityForm: $("#checkAvailabilityForm"),
availabilityLocation: $("#checkAvailabilityForm #JobLocation"),
candidateIds: $("#CandidateIds"),
tempJobId: $("#TempJobId"),
msgPanel: $("#msgPanel"),
msg: $(".msg"),
errorAvailability: $("#availabilityError"),
availabilityConfirmationDialog: $("#availabilityConfirmationDialog"),
infoBubbleMessage : $("#infoBubbleMessage"),
availabilityConfirmationMsg: $("#availabilityConfirmationDialog .msgDialog"),
downloadInfoLink : $("#downloadInfoLink")
},
preview: {
previewBtn: $('.previewBtn')
},
messagePanel: $("#messagePanel")
},
minWageRate : @Constants.Range.ApprenticeshipsPerHourMin,
authentication : @(Request.IsAuthenticated.ToString().ToLower()),
minDate: '@String.Format("{0:yyyy/MM/dd}", DateTime.Now)',
pageInfo: {
number: @Model.Results.PageNumber,
size: @Model.Results.PageSize,
resultsCount: @Model.TotalResultsCount
},
criteria : @Html.Raw(new JavaScriptSerializer().Serialize(Model.Criteria)),
remainingAccessLimit: @Model.AccessInfo.Remaining,
totalAccessLimit: @Model.AccessInfo.Limit,
availableCandidates: @Model.AvailableCandidates,
candidates: @Html.Raw(new JavaScriptSerializer().Serialize(Model.Results ?? Model.Results.ToJSON()))
};
})
</script>
定义('options',['jquery'],函数($){
返回选项={
salesPhoneNumber:'@ConfigurationManager.AppSettings.Get(“salesPhoneNumber”),
saleInfoMessage:“要访问临时搜索候选人详细信息,请致电“+salesPhoneNumber,
subscriptionInfo:@Html.Raw(新的JavaScriptSerializer().Serialize(Model.AccessInfo??null)),
questionProLink:src=“@(Request.Url.Scheme)://www.questionpro.com/a/TakeSurvey?id=@(Model.IsRecCon?AppSettings.SurveyRecConId:AppSettings.SurveyOthersId)&;custom1=@Model.createrEmail&;custom2=@Model.createrId”,
surveyEnabled:“@AppSettings.FlexSurveyEnabled”,
whatsNewUrl:“@AppSettings.UrlWhatsNew”,
salesPhoneNumber:salesPhoneNumber,
showSaleInfo:“@ViewBag.showSaleInfo”,
fileDownloadFailCookieName:“@AppSettings.FileDownloadFail”,
网址:{
signInUrl:“@string.Format”(“https://{0}/recruiter/account/signIn”,Url.RequestContext.HttpContext.Request.Url.Host)”,
签名姓名:“/recruiter/temp search/home”,
签名搜索:“/recruiter/temp search/api/temps”,
checkAvailabilityUrl:“/recruiter/temp search/api/availability”,
searchUrl:“/recruiter/temp search/api/temps/search”,
accesslimitUrl:“/recruiter/temp search/api/ecruiters/accessinfo”,
previewUrl:“/recruiter/temp search/api/temps/preview”
},
要素:{
signInRegisterDialog:$(“#signInRegisterDialog”),
noSubscriptionDialog:$(“#noSubscriptionDialog”),
searchForm:$(“#searchForm”),
搜索关键字:$(“#关键字”),
搜索位置:$(“#位置”),
搜索半径:$(“#半径”),
搜索排序:$(“#排序”),
searchTemp:$(“#临时”),
搜索合同:$(“#合同”),
searchPayRateFrom:$(“#PayRateFrom”),
searchPayRateTo:$(“#PayRateTo”),
searchAvailability:$(“#Availability已确认”),
locationErrorMsg:$(“#locationErrorMsg”),
checkAll:$(“.checkAll”),
checkCandidate:$(“.checkCandidate”),
可用性:{
可用性BTN:$(“#可用性BTN”),
可用性对话框:$(“#可用性对话框”),
额外信息:$(“#额外信息”),
职位:$(“#职位”),
工作地点:$(“#工作地点”),
工资率:$(“#工作工资率从”),
薪酬目标:$(“#工作薪酬目标”),
startOn:$(“StartOnDate”),
持续时间:$(“持续时间”),
checkAvailabilityForm:$(“#checkAvailabilityForm”),
可用性位置:$(“#检查可用性表格#作业位置”),
候选项:$(“#候选项”),
tempJobId:$(“#tempJobId”),
msgPanel:$(“#msgPanel”),
味精:$(“.msg”),
errorAvailability:$(“#availabilityError”),
可用性确认对话框:$(“#可用性确认对话框”),
infoBubbleMessage:$(“#infoBubbleMessage”),
AvailabilityConfigurationMsg:$(“#AvailabilityConfigurationDialog.msgDialog”),
下载信息链接:$(“#下载信息链接”)
},
预览:{
previewBtn:$('.previewBtn')
},
messagePanel:$(“#messagePanel”)
},
minWageRate:@Constants.Range.学徒制,
身份验证:@(Request.IsAuthenticated.ToString().ToLower()),
minDate:“@String.Format(“{0:yyyy/MM/dd}”,DateTime.Now)”,
页面信息:{
编号:@Model.Results.PageNumber,
大小:@Model.Results.PageSize,
ResultCount:@Model.totalResultCount
},
条件:@Html.Raw(新的JavaScriptSerializer().Serialize(Model.criteria)),
remainingAccessLimit:@Model.AccessInfo.Remaining,
totalAccessLimit:@Model.AccessInfo.Limit,
availableCandidates:@Model.availableCandidates,
候选项:@Html.Raw(新的JavaScriptSerializer().Serialize(Model.Results??Model.Results.ToJSON()))
};
})
问题不在于问题中显示的代码,而在于如何要求RequireJS加载模块。执行此表单的require
调用时会显示错误消息:
var foo = require('foo');
除非已经加载了foo
,否则这种require
调用不起作用,为了确保它已经加载,您可以自己手动加载,也可以让RequireJS帮您加载。然而,要让RequireJS为您完成这项工作,您需要以某种方式编写代码。如果您想让模块使用foo
,并且您想使用上面的require
,那么您应该执行以下操作:
define(function (require) {
var foo = require('foo');
...
});
或者,如果需要使用模块
和导出
,则回调可以是函数(require,exports,module){…
此外,还应按此顺序执行以下操作:
define('options'),…
data main
并在define('options')之后使用显式的require
调用