我下面有一些代码,效果相当不错。但我正在辩论它应该是一个类似的对象,还是一个插件。
现在它是全局命名空间中的一个对象,这是“坏”但如果我把它作为一个插件我不知道该绑定它是什么,因为它没有真正的主要元素.....
它有效,但感觉不对。 我想在对象函数中使用插件或其他东西我不必使用flashMessage。但可以使用这个。 ?
$( document ).ready(function() {
flashMessage = {
success: function(message, element) {
flashMessage.showMessage('success', message, element);
},
error: function(message, element) {
flashMessage.showMessage('error', message, element);
},
showMessage: function(type, message, element) {
$('div.alert').remove();
element = element ? element : '.main-content';
var template = flashMessage.getTemplate(type);
if(template) {
$(element).prepend(template).find('.message').first().text(message);
}
},
getTemplate: function(type) {
return $('#' + type + '-flash-template').html();
}
}
});
答案 0 :(得分:0)
无需插件。
你应该使用IIFE包装revealing module pattern(立即调用的函数表达式):
var flashmessage = function(){
var success=function(message, element){ showMessage('success', message, element); };
var error=function(message, element){ showMessage('error', message, element);};
// you got it, right?
return { success:success, error:error /*and the rest*/ }
}();
因此,您不会污染全局命名空间;只有flashmessage可见(如你的例子)。但这里的逻辑被封装在一个闭包中。它使你的目标更进一步。