포럼
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의 트리거 개념과 비슷하죠 ~_~
사실 다른 개발자분들의 스킨 개발을 위해 적용한 개념입니다.
일종의 프레임워크 개발이랄까요.
최대한 편리하게~