问题描述
define([
'jquery','can','moment','controls/base','mustache!./becauseYouShopped_view','./becauseYouShopped_model','coreMods/clickHistory/v2/clickHistory_model','coreMods/addToFavorite/addToFavorite_control',],function ($,can,moment,BaseControl,becauseYouShoppedView,BecauseYouShoppedModel,ClickHistoryModel,AddToFavorite) {
var startDate = moment().subtract(90,'days').format('YYYY-MM-DD'),endDate = moment().add(1,'days').format('YYYY-MM-DD');
var BecauseYouShopped = BaseControl({
defaults: {
moduleConfigName: 'becauseYouShopped',hideRebatePrefix: true,rebateAdditionalPrefix: 'Shop and',uSEOldRebateValueWithoutCurrency: true,tiered: {
rebateAdditionalPrefix: 'Shop and earn',uSEOldRebateValueWithoutCurrency: true
},apiParams: {
start_date: startDate,end_date: endDate,},headingPrefix: 'Because you shop at',dataLimitForGetSimilarMerchant: 14,}
},{
init: function (element,options) {
ClickHistoryModel.findOne(options.apiParams).done(function (data) {
var memberClicksAndOrders = data.attr().response;
if (memberClicksAndOrders.length) {
this.shoppedMerchantsInfo = this.getRecentlyShoppedMerchantName(memberClicksAndOrders);
if (this.shoppedMerchantsInfo) {
this.getRecommendedMerchantsAndRender();
}
}
}.bind(this)).fail(function (error) {
mn.log(error);
});
},return BecauseYouShopped;
});
我需要将此参数 dataLimitForGetSimilarMerchant: 14,
导出到此控件的模型,以便在 getSimilarMerchantData
函数中使用它。
但是当我导入它时 - 您可以在此处的代码中看到:
define(['jquery','utils/promiseUtils','models/base','coreMods/bonusComponents/becauseYouShopped/becauseYouShopped_control',promiseUtils,BaseModel,BecauseYouShopped) {
console.log("1 log: ",BecauseYouShopped);
return BaseModel.extend({
/**
* Get response from one content group and type
* @param contentGroupIdAndType
* @returns {*}
*/
getSimilarMerchantData: function (merchantId,merchantName) {
var deferred = $.Deferred(),self = this;
var controlOptions = BecauseYouShopped.defaults.dataLimitForGetSimilarMerchant;
console.log("2 log: ",BecauseYouShopped);
if (!merchantId) {
return can.Deferred().reject('merchant id is not specified');
}
var options = {
url: mn.contentAPIEndPoint + '/merchants/' + merchantId + '/similar',method: 'GET',dataType: 'json',headers: self.getAjaxHeaders(),data: self.getDefaultAjaxData({limit: controlOptions})
};
},{});
});
我收到 BecauseYouShopped
是 undefined
那么,如何将这个参数导入模型?
解决方法
您拥有导入因为YouShopped 模型的BeforeYouShopped 控件,但该模型也在导入该控件。如果您不尝试在线程中使用依赖项模块,则这种循环依赖有时可以由您的依赖项管理器解决——例如,StealJS 会这样做——但是如果您使用 RequireJS 就像您是基于使用define(),您将需要稍后要求() 您的依赖项之一,而不是在初始加载时对其进行定义()。详情请访问 https://requirejs.org/docs/api.html#circular