2015-06-26 156 views
0

我想更正dojox/calendar/Calendar中錯誤的週數問題。我知道要改變=> exports._getWeekOfYear dojo/date/locale中的函數如何覆蓋dojo功能

如果我把它放在js文件中,但我不想/不能修改dojo的文件,

我想申請覆蓋這裏找到解決方案:

http://g00glen00b.be/dojo-inheritance-overriding-extending/here

沒有任何成功 我得到一個語法錯誤:缺少:物業編號

後使用var obj中的行=新出口();從我的最後一次嘗試

代碼:

require(["dojo/_base/lang", "dojo/date/locale"], function(lang, locale){ 
    lang.extend(locale, { 
     var obj = new exports(); 
     obj._getWeekOfYear = function(/*Date*/ dateObject, /*Number*/ firstDayOfWeek){ 
      if(arguments.length == 1){ firstDayOfWeek = 0; } 
      var determinedate = new Date(); 
      determinedate.setFullYear(dateObject.getFullYear(), dateObject.getMonth(), dateObject.getDate()); 
      var D = determinedate.getDay(); 
      if(D == firstDayOfWeek) D = 7; 
      determinedate.setDate(determinedate.getDate() + (4 - D)); 
      var YN = determinedate.getFullYear(); 
      var ZBDoCY = Math.floor((determinedate.getTime() - new Date(YN, 0, 1, -6))/86400000); 
      var WN = 1 + Math.floor(ZBDoCY/7); 
      return WN; 
     }; 
    }); 
}); 

我想:

exports._getWeekOfYear: function(...)  
exports._getWeekOfYear=: function(...) 

任何想法?

回答

2

沒有提供整個解決方案,我注意到的第一件事是「出口」不是你可以通過使用new關鍵字實例化的類。在那個特定的dojo模塊中,exports只是一個暴露API的對象。

看看SitePen上的解決方案,尤其是「MonkeyPatching」是一種對我來說效果很好的機制。

0

感謝

我終於成功地做我想要使用此代碼

require(["dojo/date/locale"], function(local){ 

     local._getWeekOfYear= function(/*Date*/ dateObject, /*Number*/ firstDayOfWeek){ 
      if(arguments.length == 1){ firstDayOfWeek = 0; } 
      var determinedate = new Date(); 
      determinedate.setFullYear(dateObject.getFullYear(), dateObject.getMonth(), dateObject.getDate()); 
      var D = determinedate.getDay(); 
      if(D == firstDayOfWeek) D = 7; 
      determinedate.setDate(determinedate.getDate() + (4 - D)); 
      var YN = determinedate.getFullYear(); 
      var ZBDoCY = Math.floor((determinedate.getTime() - new Date(YN, 0, 1, -6))/86400000); 
      var WN = 1 + Math.floor(ZBDoCY/7); 
      return WN; 
     } 
    ; 
}); 

出口的確是PB。