이렇게하는 방법은 다양합니다. 아래와 같이 Y.Base.create
을 사용하면됩니다. 코드가 제작 준비 상태가 아니거나 제대로 작동하지 않을 수도 있지만 위젯이 아닌 모듈을 만드는 방법에 대한 답변이 되었기를 바랍니다.
아래 코드는 Y.Base
을 확장하는 모듈을 만듭니다. 이것은 우리가 Attributes
및 기타 멋진 것들을 사용하자. doc for Y.Base을 확인하십시오.
YUI.add('my-pref-manager', function (Y) {
var PrefManager = Y.Base.create('myPrefManager', Y.Base, [], {
initializer: function() {
this.after('prefsChange', this.changePref);
},
changePref: function (e) {
Y.Cookie.setSub(this.get('prefStore'), e.subAttrName, this.get(e.subAttrName));
},
setPref: function (name, val) {
this.set('prefs.'+name, val);
},
getPref: function (name) {
return this.get('prefs.'+name);
}
}, {
ATTRS: {
prefStore: {
value: null,
setter: function (val) {
return Y.Cookie.set(val, val);
}
},
prefs: {
value: {}
}
}
});
Y.namespace('My').PrefManager = PrefManager;
}, '0.0.1', {
requires: ['base', 'cookie']
});
YUI().use('my-pref-manager', function (Y) {
var A = new Y.My.PrefManager({prefStore: 'userPrefs'}),
B = new Y.My.PrefManager({prefStore: 'displayPrefs'});
A.setPref('x', 3);
A.setPref('y', 54);
B.setPref('tty', 7);
console.log(A.getPref('x')); // 3
});
그것을 밖으로 시도 : http://jsfiddle.net/B62nu/