포럼
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
트리거 개념 적용하는 거 재미있네요.
2014.05.11 07:31
insertTrigger: function(funcName, funcPos, procFunc) { var trigger = { name : funcName, func : procFunc } switch (funcPos) { case "before": this.beforeTriggers.push(trigger); break; case "after": this.afterTriggers.push(trigger); break; } return this; }, getTriggers: function(funcName, funcPos) { var targetTriggers; var triggers = new Array(); switch (funcPos) { case "before": targetTriggers = this.beforeTriggers; break; case "after": targetTriggers = this.afterTriggers; break; default: return triggers; } targetTriggers.sort(function(primary, secondary) { if (primary.name == secondary.name) { return 0; } else if (secondary.name == funcName) { return 1; } return -1; }); for (var i in targetTriggers) { var trigger = targetTriggers[i]; if (trigger.name == funcName) { triggers.push(trigger.func); } else { break; } } return triggers; }, triggerCall: function(funcName, funcPos) { var triggers = this.getTriggers(funcName, funcPos); for (var i in triggers) { var func = triggers[i]; if (typeof func == "function") { func(); } } return this; }
개발 중인 모듈의 자바스크립트 일부분입니다.
트리거라는 이름의 배열에 함수들을 등록하고, 각 메서드마다 triggerCall을 사용한 트리거 사용을 하고 있습니다.
XE의 트리거 개념과 비슷하죠 ~_~
사실 다른 개발자분들의 스킨 개발을 위해 적용한 개념입니다.
일종의 프레임워크 개발이랄까요.
최대한 편리하게~