首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Noty with RequireJS

Noty with RequireJS
EN

Stack Overflow用户
提问于 2015-05-01 18:02:43
回答 1查看 321关注 0票数 1

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

app.js

notifier.js

EN

回答 1

Stack Overflow用户

发布于 2015-05-02 01:20:03

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

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

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

代码语言:javascript
复制
define(['noty', '$q'], function (noty, $q) {
    var notifier = (function notifier() {
        var MESSAGE_TIMEOUT = 3000;

        function notifier(){
        }
        //...
        return notifier;
    })(noty, $q);

    return notifier;
});

这真是一种令人困惑的方式。您有三个命名为notifier的东西,我认为没有必要将模块包装在生命周期中。你可以这样做:

代码语言:javascript
复制
define(['noty', '$q'], function (noty, $q) {
    var MESSAGE_TIMEOUT = 3000;

    function notifier(){}
    //...
    return notifier;
});

下面是工作代码片段:

代码语言:javascript
复制
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');
    });
  });
代码语言:javascript
复制
<script src="http://requirejs.org/docs/release/2.1.17/minified/require.js"></script>
<button id="btn">btn</button>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29984906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档