【问题标题】:Noty with RequireJSNoty 与 RequireJS
【发布时间】:2015-05-01 10:02:42
【问题描述】:

我想使用Noty 作为RequireJS 的依赖项。问题出在依赖函数中。它依赖于 $q 和 noty。 $q 没问题,但 noty 有错误 - noty 不是函数。任何人都可以帮助解决这个问题。

app.js

notifier.js

【问题讨论】:

    标签: javascript requirejs noty


    【解决方案1】:

    我无法重现您的问题。我已经包含了一个工作代码 sn-p,它在底部复制了您的设置。你能把它和你的比较一下,看看我做了什么不同的事情吗?检查我的notyq 版本。

    如果您提供准确的错误消息和行号会有所帮助。

    此外,在您的通知模块定义中,您有:

    define(['noty', '$q'], function (noty, $q) {
        var notifier = (function notifier() {
            var MESSAGE_TIMEOUT = 3000;
    
            function notifier(){
            }
            //...
            return notifier;
        })(noty, $q);
    
        return notifier;
    });
    

    这真是令人困惑的做法。您有三个名为通知程序的东西,我认为不需要将模块包装在 IIFE 中。你可以有:

    define(['noty', '$q'], function (noty, $q) {
        var MESSAGE_TIMEOUT = 3000;
    
        function notifier(){}
        //...
        return notifier;
    });
    

    这是有效的 sn-p:

    require.config({
      paths: {
        "jquery": "http://code.jquery.com/jquery-2.1.1.min",
        "noty": "https://rawgit.com/needim/noty/v2.3.5/js/noty/packaged/jquery.noty.packaged.min",
        "$q": "https://rawgit.com/kriskowal/q/v1.3.0/q"
          //"notifier": "/content/js/notifier" // note, defined as a named module below
      }
    });
    
    
    define('notifier', ['noty', '$q'], function(noty, $q) {
      var notifier = (function notifier() {
        var MESSAGE_TIMEOUT = 3000;
    
        function notifier() {}
    
        notifier.prototype.showErrorMessage = function(msg) {
          var deferred = $q.defer();
    
          noty({
            text: msg,
            type: 'error',
            layout: 'topCenter',
            timeout: MESSAGE_TIMEOUT
          });
    
          setTimeout(function() {
            deferred.resolve();
          }, MESSAGE_TIMEOUT);
    
          return deferred.promise;
        };
    
        notifier.prototype.showSuccessMessage = function(msg) {
          var deferred = $q.defer();
    
          noty({
            text: msg,
            type: 'success',
            layout: 'topCenter',
            timeout: MESSAGE_TIMEOUT
          });
    
          setTimeout(function() {
            deferred.resolve();
          }, MESSAGE_TIMEOUT);
    
          return deferred.promise;
        };
    
        notifier.prototype.showConfirmMessage = function(confirmMessage) {
          var deferred = $q.defer();
    
          noty({
            text: confirmMessage,
            type: 'confirm',
            layout: 'topCenter',
            buttons: [{
              text: "Yes",
              onClick: function($noty) {
                deferred.resolve();
                $noty.close();
              }
            }, {
              text: "Cancel",
              onClick: function($noty) {
                deferred.reject();
                $noty.close();
              }
            }]
          });
    
          return deferred.promise;
        };
    
        return notifier;
      })(noty, $q);
    
      return notifier;
    });
    
    requirejs(["jquery", "noty", "$q", "notifier"],
      function($, noty, $q, notifier) {
        $("#btn").click(function() {
          var n = new notifier();
          n.showSuccessMessage('Success');
        });
      });
    <script src="http://requirejs.org/docs/release/2.1.17/minified/require.js"></script>
    <button id="btn">btn</button>

    【讨论】:

      猜你喜欢
      • 2016-12-28
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 2012-02-15
      • 2018-09-22
      • 2012-04-14
      • 2015-02-26
      相关资源
      最近更新 更多