【问题标题】:how to override dojo function如何覆盖dojo功能
【发布时间】:2015-06-26 09:38:02
【问题描述】:

我想纠正 dojox/calendar/Calendar 中星期数不正确的问题。我知道要更改的内容 => dojo/date/locale 中的 exports._getWeekOfYear 函数

如果我把它放在 js 文件中,它可以完美地工作,但是,我不想/不能修改 dojo 的文件。

我想应用此处找到的覆盖解决方案:

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

没有成功 我得到一个 SyntaxError: missing : after property id

就行了 var obj = new exports();

我上次尝试的代码:

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(...)

有什么想法吗?

【问题讨论】:

    标签: javascript dojo


    【解决方案1】:

    在不提供整个解决方案的情况下,我首先注意到“exports”不是一个可以使用 new 关键字实例化的类。在那个特定的 dojo 模块中,exports 只是一个暴露 API 的对象。

    看看SitePen上的解决方案,尤其是“MonkeyPatching”是一种非常适合我的机制。

    【讨论】:

      【解决方案2】:

      谢谢

      我终于设法用这段代码做我想做的事

      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;
              }
          ;
      });
      

      确实出口是铅。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-17
        • 1970-01-01
        • 2015-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-20
        相关资源
        最近更新 更多