[英]Noty with RequireJS
我想将Noty
用作RequireJS
的依赖项。 问题出在依赖函数中。 它依靠$q
和noty。 $q
但是noty出现错误-noty不是函数。 任何人都可以帮助解决这个问题。
我无法重现您的问题。 我包含了一个工作代码段,该代码段重复了底部的设置。 您可以将其与您的产品进行比较,看看我做的事情是否有所不同吗? 检查我的noty
和q
版本。
如果您提供了确切的错误消息和行号,将会很有帮助。
另外,在通知程序模块定义中,您具有:
define(['noty', '$q'], function (noty, $q) {
var notifier = (function notifier() {
var MESSAGE_TIMEOUT = 3000;
function notifier(){
}
//...
return notifier;
})(noty, $q);
return notifier;
});
这确实是令人困惑的方式。 您有三件名为notifier的东西,我认为不需要将模块包装在IIFE中。 您可能只有:
define(['noty', '$q'], function (noty, $q) {
var MESSAGE_TIMEOUT = 3000;
function notifier(){}
//...
return notifier;
});
这是工作片段:
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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.