繁体   English   中英

Nott与RequireJS

[英]Noty with RequireJS

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

app.js

notifier.js

我无法重现您的问题。 我包含了一个工作代码段,该代码段重复了底部的设置。 您可以将其与您的产品进行比较,看看我做的事情是否有所不同吗? 检查我的notyq版本。

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

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

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM