ãã®èšäºã¯å€ããªã£ãŠããŸãã æ°ããããã¥ã¡ã³ãã«ã¯ããã®æçš¿ããæãé¢é£ããæ
å ±ãå«ãŸããŠããŸãã bindNodeããã³onãåç
§ããŠãã ãããHabrã®ãã¹ãŠã®èªè
ãšäœå®¶ãžã®æšæ¶ã
ã¢ããªã±ãŒã·ã§ã³ã®æ§é åã®å€èŠ³ããããã«å€æŽã§ããã³ã³ãã¯ããªãã¬ãŒã ã¯ãŒã¯ã玹ä»ããŸãã ãããªã§ãŒã·ã«ã«ã¯ã¡ãã£ãšããéæ³ãåã蟌ãŸããŠããŸãããããã¯æ¬¡ã®ãããªäžé£ã®èšäºã§æããã«ããããšãã§ããŸãã
泚ç®ãéããã³ãŒãïŒ
mk.on( 'change:x', function() { alert( 'x is changed to ' + this.x ); }); mk.x = 2;
ãããŠããã¯... IE8ã§åäœããŸãã
ãããªã§ãŒã·ã«ãšã¯ïŒ
ãã¬ãŒã ã¯ãŒã¯ãšããŠã®ãããªã§ãŒã·ã«ã³ã³ãã¯ããªãµã€ãºãšåŠç¿ããããã¢ãŒããã¯ãã£ã«ããã倧èŠæš¡ã§æ¡åŒµå¯èœãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã ä»æ¥ã¯èª°ãé©ããªãã§ãããããè©ŠããŠã¿ãŸãã
å³æžé€šãšããŠã®ãããªã§ãŒã·ã«MatryoshkaãæäŸããæ©èœãæ°ã«å
¥ã£ãããã³ãŒããå€æŽããå¿
èŠã¯ãããŸããã ãããªã§ãŒã·ã«ã¯ãèå³æ·±ãã¡ãœãããæã€ã¯ã©ã¹ã®ã»ãããšããŠäœ¿çšã§ããŸãã
ç¬èªã®ãã¬ãŒã ã¯ãŒã¯ãäœæããããã®ãã©ãããã©ãŒã ãšããŠã®ãããªã§ãŒã·ã«ãããªã§ãŒã·ã«ã¯ãMVCãMVVMãïŒ
your_design_patternïŒ
ãã¬ãŒã ã¯ãŒã¯ãšããŠäœçœ®ä»ããããŠããªãæ¡åŒµå¯èœãªæ±çšãã¬ãŒã ã¯ãŒã¯ã§ãããããã£ãŠãããã°ã©ããŒã¯ãèšèšãã¿ãŒã³ã®æãŸããã»ããã䜿çšã§ããç¬èªã®ã¢ãŒããã¯ãã£ãå®è£
ããæ©äŒããããŸãã
ãªãã§ïŒ
ãã¬ãŒã³ããŒã·ã§ã³ã«ã€ããŠèããèªåãæžããã³ãŒãã§ãã¬ãŒã³ããŒã·ã§ã³ãå€æŽããããšã«ããããããŠããŸãã Javascriptã§ã®ããŒã¿åæãšãã¬ãŒã³ããŒã·ã§ã³ã®ãã¹ãŠã®æŸèæã¯ãç§ã«åŠå®çãªææ
ãåŒã³èµ·ãããŸãããããªã§ãŒã·ã«ã®å°æ¥ã«å¯Ÿããéå¿çãªç®æšã¯ãããŒã¿ã®ã¿ã§åäœããUIãããããšãå®å
šã«å¿ããããšã§ãã ãã¡ããããã®ã¿ã¹ã¯ã100ïŒ
解決ããããšã¯ã§ããŸããããç§ãã¡ããã°ã©ããŒã¯ãäžããããããŒã«ãæ倧éã«æŽ»çšããŠãã³ãŒããããç°¡æœã«ãããçããããæè»ã«ããå¿
èŠããããŸãã ã³ãŒããæ¯ã£ãŠæªã«ãªãæã§ãã
ããŒã¿ãã€ã³ãã£ã³ã°
ãã©ãŠã¶ã®ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã§ã¯ãããŒã¿ãšãã¬ãŒã³ããŒã·ã§ã³ã®åæãå¿
èŠã§ããããšãç¥ãããŠããŸãã å€å
žçãªåé¡ïŒããŒã¿ããããŸãïŒ
var o = { x: 2 };
ãã®ããŒã¿ãå€æŽãã
select
ããããŸãïŒ
<select> <option>1</option> <option>2</option> <option>3</option> <select>
çŽç²ãªJS + jQueryã³ãŒãã䜿çšããå Žåã次ã®ããã«èšè¿°ããŸãã
$( 'select' ).on( 'change', function() { ox = +this.value; });
次ã«ãããŒã¿ãå€æŽããå Žåã次ã®ããã«èšè¿°ããŸãã
ox = 1; $( 'select' ).val( ox );
ããã¯ãããããã£ãšèŠçŽ ãšãã2ã€ã®ãååãã®å€ãäžåºŠã«èšå®ããå¿
èŠããããããããŸãè¯ããããŸããã
ãã®åé¡ã¯ããŸããŸãªæ¹æ³ã§è§£æ±ºãããŸããããã¯ããŒã³ïŒMVCïŒã¯ãã¢ããªã±ãŒã·ã§ã³ãã¢ãã«ïŒã¢ãã«ãã³ã¬ã¯ã·ã§ã³ïŒããã¬ãŒã³ããŒã·ã§ã³ïŒHTMLã³ãŒãïŒãããã³ã³ã³ãããŒã©ãŒïŒãã¥ãŒïŒã«åå²ããŸãã Knockout and AngularïŒMVVMïŒã¯ã.NETããã¯ã©ã€ã¢ã³ãWebã«ç§»è¡ãããã©ã¯ãã£ã¹ã䜿çšããŠããŒã¿ããã€ã³ãããŸãïŒã³ã³ãããŒã©ãŒïŒãã®å Žåã¯ViewModelïŒã眮ãæããããžãã¯ã®äžéšã¯HTMLã³ãŒãã§èšè¿°ãããŠããŸãïŒèª¬æãééã£ãŠããå Žåã¯è¬çœªããŸãïŒã è¿œãã€ããªããã¬ãŒã ã¯ãŒã¯ããããããããŸãã
ãããªã§ãŒã·ã«ã¯ãæåã«ããã°ã©ããŒãïŒMVVMãšã¯ç°ãªãïŒHTMLã³ãŒãã«è§Šããªãããã«ãã¬ãŒã³ããŒã·ã§ã³ã«ããŒã¿ãæ·»ä»ããŸãã次ã«ãããã°ã©ããŒã¯ïŒBackboneãšã¯ç°ãªãïŒã¢ãã«ãå€æŽããHTMLèŠçŽ ã®ã€ãã³ãã«ã€ããŠèããããšãæ¢ããŸãã
var mk = new Matreshka;
ããŒã¿ãå€æŽããå Žåã¯ã次ã®ããã«èšè¿°ããŸãã
mk.x = 2;
ãã®ãããªã³ãŒãã¯Xããã¥ãŒã¹ã«å²ãåœãŠãã ãã§ãªãã
.value = 2
èšå®ããããšã§selectã®ç¶æ
ãå€æŽããŸãã
ãããŠãããã¯
.set
ãããªã¡ãœããã䜿çšã
.set
ã
jsbin.com/jikewipi/2/editããã§äœãèµ·ãã£ãã®ã§ããïŒ
mk.bindNode( 'x', 'select' ... )
å¥åŠãªããšã«ã
bindNode
ã¡ãœããã¯ãèŠçŽ ãããããã£ã«ãã€ã³ãããŸãã æåã®åŒæ°ã¯ãªããžã§ã¯ãã®ããŒã2çªç®ã¯ã»ã¬ã¯ã¿ãŒããã®å Žåã¯
'select'
ã§ãã 2çªç®ã®åŒæ°ã®ã¿ã€ãã¯ãjQueryã§åãå
¥ããããä»»æã®å€ã§ãïŒã»ã¬ã¯ã¿ãŒãçŽç²ãªèŠçŽ ãjQueryãªããžã§ã¯ããNodeListãèŠçŽ ã®é
å...ã€ãŸãã
'select'
ã¯
$( 'select' )
ãŸãã¯
document.getElementsByTagName( 'select' )
ãŸãã¯
document.querySelector( 'select' )
眮ãæããããšãã§ã
document.querySelector( 'select' )
ã
3çªç®ã®åŒæ°ã¯æãèå³æ·±ãã®ã§ãé çªã«åæããŸãã
on: 'change'
質åã«çããŸãããèŠçŽ ããå€ãååŸãã察å¿ããããããã£ã«å²ãåœãŠãããã«ãèŠçŽ ã§ã©ã®ã€ãã³ããçºçããå¿
èŠããããŸããïŒã
getValue: function() { return this.value; }
ãèŠçŽ ã®å€ãæœåºããæ¹æ³ããšãã質åã«çããŸããå€ãè¿ããŸãã
setValue: function( v ) { this.value = v; }
ãèŠçŽ ã®å€ãã©ã®ããã«èšå®ããŸããïŒããšãã質åã«çããŸããvã¯å€ã§ãïŒãã®å Žåã¯
2
ïŒã
ããã¯ãžã®ãªã³ã¯ïŒ
finom.imtqy.com/matreshka/docs/Matreshka.html#bindElementã¿ã¹ã¯ãè€éã«ããŸãããã jQuery UIããã¹ã©ã€ããŒ
api.jqueryui.com/sliderãããããããããŒã¿ã«ãã€ã³ãããã¿ã¹ã¯ããã£ããšããŸãã ããã¥ã¡ã³ããèŠãŠãã¹ã©ã€ããŒããã©ãã°ããããšãã«çºçãã
"slide"
ã€ãã³ãã確èªããŸãã
ãŸãããã€ã³ãããåã«ãã¹ã©ã€ããŒã宣èšããŸãã
<div class="slider"></div>
$( ".slider" ).slider({ min: 0, max: 100 });
次ã«ããããªã§ãŒã·ã«ã®ã€ã³ã¹ã¿ã³ã¹ã宣èšããŸãã
var mk = new Matreshka();
次ã«ããã€ã³ãã£ã³ã°ãåŒã³åºããŸãã
mk.bindNode( 'x', '.slider', { on: 'slide',
次ã®ã³ãŒããåŒã³åºããš...
mk.x = 44;
...ã¹ã©ã€ããŒã®äœçœ®ãå€ãããŸãã
éã«ãã¹ã©ã€ããŒãã³ãã«ããã©ãã°ãããšã
mk.x
ãå€æŽãããŸãã
UPD ïŒããŒãžã§ã³0.2以éã3çªç®ã®åŒæ°ã«æ°ããããŒ
'initialize'
ãè¿œå ãããŸãããããã«ããããã€ã³ãããåã«èŠçŽ ãåæåã§ããŸãã
0.2ã«é¢ããèšäºãåç
§ããŠãã ãã ã ã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
mk.bindNode( 'x', '.slider', { initialize: function() { $( this ).slider({ min: 0, max: 100 }); }, on: 'slide', getValue: function() { return $( this ).slider( 'option', 'value' ); }, setValue: function( v ) { $( this ).slider( 'option', 'value', v ); } });
å€ã衚瀺ããHTMLèŠçŽ ãè¿œå ããŠãã¿ã¹ã¯ãå°ãè€éã«ããŸãããã
<div class="output">Value is <span class="x"></span></div>
ãããŠãããã
'x'
ãã€ã³ãããŸãïŒ
mk.bindNode( 'x', '.output .x', { setValue: function( v ) { this.innerHTML = v; } });
ã芧ã®ãšãããèŠçŽ ã®ãã€ã³ãã£ã³ã°ãªãã·ã§ã³ã«ã¯
"on"
ããããã£ãš
"getValue"
ã¡ãœããããããŸããã ããã¯ã
".output .x"
èŠçŽ ããå€ãæœåºãããèšå®ããã ãã§ããããšãæå³ããŸãã
è€æ°ã®èŠçŽ ã1ã€ã®ããããã£ã«ãã€ã³ãã§ããŸãã éããŸãçã§ãã1ã€ã®èŠçŽ ã«å€ãã®ããããã£ãã¢ã¿ããã§ããŸãã ãããªã§ãŒã·ã«ã¯ããå€å¯Ÿå€ãã®ã«ãŒã«ã«åŸã£ãŠèŠçŽ ããã€ã³ãã§ããããšãèŠããŠãããŠãã ããã
çµæïŒ
jsbin.com/bulobuhu/7/edit ïŒãã³ã³ãœãŒã«ãã¿ããéããŠ
x
å€æŽããŠã¿ãŠãã ãã
mk.x = 42;
ããšãã°ã
mk.x = 42;
ãšæžã
mk.x = 42;
ïŒ
çŽ æŽãããã2ã€ã®èŠçŽ ããã€ã³ãããŸããããåé·ãªã³ãŒãããããããããŸããïŒç§ã®æèŠïŒã ã¹ã©ã€ããŒãããããããå Žåã¯ã©ããªããŸããïŒ ç§ãæžããã³ã«...
mk.bindNode( property, element, { on: 'slide', getValue: function() { return $( this ).slider( 'option', 'value' ); }, setValue: function( v ) { $( this ).slider( 'option', 'value', v ); } });
...ããŸããããã§ã¯ãããŸããã
ã©ããã èŠçŽ ããã€ã³ããããšãã«ãã§ãã¯ãããèŠçŽ ã®äžè¬çãªæ©èœãèŠããŠããå¿
èŠããããŸãã ãããè¡ããšäŸ¿å©ã§ãã
mk.bindNode( 'x', '.slider' );
ã©ããã£ãŠããã®ïŒ
MK.elementProcessors
ã¯ãéçããããã£
MK.elementProcessors
MK.defaultBinders
ïŒååå€æŽïŒããããŸããããã¯é¢æ°ã®é
åã§ãã é¢æ°ã¯ããã§ãã¯å¯Ÿè±¡ã®èŠçŽ ã§ããåŒæ°
el
åããæ¡ä»¶ãå«ã¿ãŸããèŠçŽ ãäœããã®ã«ãŒã«ã«äžèŽããå Žåãäžèšã®
.bindNode
äŸã§ã¯3çªç®ã®åŒæ°ã§ãããªãã·ã§ã³ãªããžã§ã¯ããè¿ããŸãã
ã¹ã©ã€ããŒã«ã¯1ã€ã®ã«ãŒã«ããããŸãã誰ãã
ui-slider
ã¯ã©ã¹ãæã£ãŠããŸãã ãããã£ãŠãæ¡ä»¶é¢æ°ã¯æ¬¡ã®ããã«ãªããŸãïŒ
UPD ïŒ
'initialize'
ããããã£ãå¿ããªãã§ãã ããïŒïŒ
function( el ) { if( $( el ).hasClass( 'ui-slider' ) ) { return { on: 'slide', getValue: function() { return $( this ).slider( 'option', 'value' ); }, setValue: function( v ) { $( this ).slider( 'option', 'value', v ); } }; } }
äŸã¯ãéåžžã«åçŽã§ããããšãæã¿ãŸããèŠçŽ ãã¹ã©ã€ããŒã§ãããã©ããã確èªããã¹ã©ã€ããŒã§ããå Žåã¯ãªãã·ã§ã³ãè¿ããŸãã
é¢æ°ã
MK.defaultBinders
é
åã«æ¿å
¥ããŸãã
MK.elementProcessors.push( function( el ) { if( $( el ).hasClass( 'ui-slider' ) ) { return { on: 'slide', getValue: function() { return $( this ).slider( 'option', 'value' ); }, setValue: function( v ) { $( this ).slider( 'option', 'value', v ); } }; } });
ããã¥ã¡ã³ããªã³ã¯ïŒ
finom.imtqy.com/matreshka/docs/Matreshka.html#defaultBindersãã®åŸãå°ãªããšã100åã®ã¹ã©ã€ããŒã䜿çšããŠã
.bindNode
é¢æ°ã§ã
.bindNode
ããããããã£ãšèŠçŽ ã®ã¿ãå®çŸ©ããŸãã
<div class="slider1"></div> <div class="slider2"></div>
$( ".slider1, .slider2" ).slider({ min: 0, max: 100 }); var mk = new Matreshka(); mk.bindNode({ x1: '.slider1', x2: '.slider2' });
çµæïŒ
jsbin.com/celarefu/2/editäŸã§ã¯ãåºåãåç
§ã«ãã£ãŠãã€ã³ããããŠããããšã«æ³šæããŠãã ããã
mk.bindNode({ x1: '.output .x1', x2: '.output .x2' }, MK.binders.innerHTML() );
MK.binders
ã¯ãäžèšã®ãªããžã§ã¯ããè¿ãã«ã¹ã¿ã ãã€ã³ãé¢æ°ãå«ãéçããããã£ã§ãïŒããããã£
on, setValue, getValue
ïŒã ãªããžã§ã¯ãã¯ãç¬èªã®ãã€ã³ããŒã§å±éã§ããŸãã
MK.binders.innerHTML
éåžžã®htmlèŠçŽ ã®ãã€ã³ãã£ã³ã°ãªãã·ã§ã³ãè¿ãããã®
innerHTML
å€æŽããé¢æ°ã
DocïŒ
finom.imtqy.com/matreshka/docs/Matreshka.binders.html#innerHTMLä»ã®ã«ãŒã«ãšäžèŽããªãèŠçŽ ã®
.innerHTML
ãå€æŽããã«ãŒã«ãäœæããŠã¿ãŸãããïŒ äžèšã§èšãã°ãå©äŸ¿æ§ã§ãã å€ãäžèŠãªèŠçŽ ããã€ã³ãããå¿
èŠãããå ŽåããããŸãããããã«ã€ããŠã¯æ¬¡ã®èšäºã§è©³ãã説æããŸãã
ããã©ã«ãã§ã¯ã
MK.defaultBinders
ã¯ãåçŽãªã«ãŒã«ãžã®æºæ ã«ã€ããŠèŠçŽ ããã§ãã¯ãã1ã€ã®é¢æ°ãå«ãŸããåçŽãªèŠçŽ ïŒ
select
ã
textarea
ã
input[type="text"]
ã
input[type="checkbox"]
ã
input[type="radio"]
ïŒã
äŸãã°
<select class="my-select"> ... </select>
次ã®ãããªã³ãŒãã䜿çšããŸãã
mk.bindNode( 'x', '.my-select' );
...ãã¹ã人圢èªäœã¯ãæãäžè¬çãª
select
ããããã€ãã©ã®ããã«ååŸããã©ã®ããã«èŠçŽ ã®å€ãèšå®ããããç¥ã£ãŠã
select
ã
äŸïŒ
jsbin.com/tepiyoso/2/edit ïŒã¯ãªãã¯ããŠãå
¥åã®ããã¹ããå€æŽãããœãŒã¹ãèŠãŠãã ããïŒ
ã¯ã©ã¹ã»ã¬ã¯ã¿ãŒã䜿çšããã¯ã©ã¹åºæº2æ¥å
ããããªã§ãŒã·ã«ã®
çºè¡šãjavascript.ruãã©ãŒã©ã ã«
æçš¿ããŸããã ãŠãŒã¶ãŒ
nerv_ã¯ãAngularJSã³ãŒããåŒçšããŠãã»ã¬ã¯ã¿ãŒã¢ãããŒãã®æ¹å€ãåççã«èª¬æããŸããã
å°ãªããšããµãŒãã¹ã»ã¬ã¯ã¿ãç£èŠããå¿
èŠãããããšãããããŸãã
ãããŠããã¹ãŠã®ããã€ã³ãã£ã³ã°ããjsã³ãŒãã§èšè¿°ããå¿
èŠãããããšãããããŸããã ãããŠãååãšããŠã宣èšçã«å°ãã代ããã«-å®ããŠå
æ°ã«-圌ãã®å€ãããããŸãã
æ·»ä»ããèŠçŽ ãå€æ°ããå Žåãæ·»ä»ããèŠçŽ ã®ã¯ã©ã¹ãå€æŽããªãããã«æ³šæããå¿
èŠãããããšã«åæããŸãããããã£ãŠããã®å ŽåãUIã§ããŒãæå®ãããšæ©èœããå ŽåããããŸãã
<form> <select data-key="a"></select> <select data-key="b"></select> </form>
æšè£œã®æ¹æ³ïŒ
$( '[data-key]' ).each( function() { this.bindNode( this.getAttribute( 'data-key' ), this ); });
æ£ããæ¹æ³ïŒ
.each
ã«é¢ããèšäºã®
.each
ã¡ãœããã®
MK.Object
ïŒïŒ
this.each( function( v, key ) { this.bindNode( key, this.$( '[data-key=' + key + ']' ) ); });
ãããã®2ã€ã®æ¹æ³ã¯ãMVVMãã¿ãŒã³ã®æåã®ã¹ããããšåŒã°ãããããªã§ãŒã·ã«ã«åºã¥ããŠå®è£
ã§ããŸãã 蚌æ ã¯ããã©ã°ã€ã³ãšããã«é¢ããèšäºã®åœ¢ã§æºåãããŠããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®ãè€éãªãèŠçŽ ããåèŠçŽ ãåºæ¬ã¯ã©ã¹ïŒã€ãŸããç¶æ¿ã«é¢ããèšäºã§ããæ確ã«ãªãïŒã§ãå€ãã®ãã€ã³ãã£ã³ã°ããªãããã«åºå¥ããããšã奜ã¿ãŸãã ãããããç§ã®ã¢ãããŒãã¯ãJSã³ãŒããšHTMLã¯å¯èœãªéãç°ãªãã¹ãã ãšãã信念ã«ãã£ãŠå€§ããå€åœ¢ããŸããã¿ã€ãã»ãã¿ãŒã®æ€åãšãããã°ã©ããŒãè¡ãå Žåã¯ãæå°éã®å¿
èŠãªå€æŽã®ã¿ã§ãã
ã€ãã³ã
Matryoshkaã«ã¯ãBackbone.jsãšåãããã«æ©èœããã€ãã³ããžã§ãã¬ãŒã¿ãŒãå«ãŸããŠããŸãã æåã¯ããã¬ãŒã ã¯ãŒã¯ã¯ãŠãŒã¶ãŒã®ããŒãºã«åãããŠäœæãããŠãããããã€ãã³ããæ
åœããã³ãŒãã®äžéšã¯ãã®ãã¬ãŒã ã¯ãŒã¯ããåçšãããŠããŸããã ãããããããã®ã¡ãœããã®ã³ãŒãã¯éåžžã«å®å®ããŠããããšãå€æããããããã®ãŸãŸã«ããŠããããšã«ããŸããã
var mk = new Matreshka(); mk.on( 'someevent', function( a, b ) { alert( a + ', ' + b ); }); mk.trigger( 'Hello', 'World!' );
ããã¯ããªãã¿ã§ããïŒ
ããã¥ã¡ã³ããªã³ã¯ïŒ
finom.imtqy.com/matreshka/docs/Matreshka.html#onæçš¿ã®åé ã§è¿°ã¹ãããããæ©èœã®1ã€ã¯ãããããã£ã®å€æŽã€ãã³ãã®è¿œè·¡ã§ãã
var mk = new Matreshka(); mk.on( 'change:x', function() { alert( 'New x value is ' + this.x ); }); mk.x = 5;
ããããã£ãããã€ãã®èŠçŽ ã«ãã€ã³ããããã®å€ã®å€åã远跡ããããšãã§ããŸãã
<select class="my-select"> <option>1</option> <option>2</option> <option>3</option> </select>
var mk = new Matreshka(); mk.bindNode( 'x', '.my-select' ); mk.on( 'change:x', function() { alert( 'x is now ' + this.x ); });
ã¢ãããŒãã«ã¯å€§ããªéãããããŸãã以åã¯èŠçŽ ã®DOMã®å€åã远跡ããŠããŸããããããŒã¿ã®å€åã远跡ããããã«ãªããŸãããããŒã¿ã¯ç§ãã¡ã«ãšã£ãŠã®ã¿éèŠã§ãããããèŠçŽ ã®ç¶æ
ã¯ããèªäœã§å€åããŸã
èªåã§è©ŠããŠãã ããïŒ
jsbin.com/dadakeba/1/edit.set
ã¡ãœããã®äœ¿çš
.set
ã¡ãœããã¯ãåã«æå®ãããããããã£ã«å€ãå²ãåœãŠãŸãã 次ã®2ã€ã®ç®çã§äœ¿çšãããŸãã
1.ããããã£ã
change:*key*
æž¡ããŸã
change:*key*
ã€ãã³ããªããžã§ã¯ãïŒ
"silent"
ãã©ã°ãªã©ïŒã
UPDïŒããã«ãã©ã°
ããããŸã ã
mk.on( 'change:x', function( evtOpts ) { alert( evtOpts.myFlag ); }); mk.set( 'x', 5, { myFlag: 'blah' } );
silent: true
ãã©ã°ãæž¡ãããŠãããã€ã³ããããèŠçŽ ã®å€ã¯å€æŽãããããšã«æ³šæããŠãã ããã
2.ã³ãŒãã®ç¥èªã ããããã£ãæã€ãªããžã§ã¯ãã
.set
ã¡ãœããã«æž¡ãããšãã§ããŸãã
mk.set( { x1: 1, x2: 2 } ); mk.set( { x1: 3, x2: 4 }, { silent: true } );
å
¥æå
githubã®ãªããžããªïŒ
github.com/finom/matreshka ïŒãã¬ãŒã ã¯ãŒã¯ã®ã³ãŒãã¯
build/
ãã©ã«ããŒã«ãããŸãïŒ
ãããªã§ãŒã·ã«ã¯jQueryãå¿
èŠãšããŸãããjQueryãžã®äŸåãåãé€ãäºå®ã§ãã ããŒãžã§ã³0.1以éãjQueryã¯å¿
èŠãããŸããã
çµè«ãšããŠ
ãããªã§ãŒã·ã«ã«æèŒãããŠããã¡ã€ã³ãããã玹ä»ããŸããã ä»ã®æ©èœã¯
ããã¥ã¡ã³ãã«ãã
ãŸã ã ããã«ã¯ãä»ã®åæ§ã«éèŠãªæ¹æ³ããããŸãã
.off
æå®ãããã€ãã³ããç¡å¹ã«ãã
.remove
åé€ããããã£
ã¶ãäžãã«ã¹ã¿ã ã¢ã¯ã»ãµãŒã
.define
.defineGetter
èŠçŽ ã«ã²ãã¿ãŒãã¶ãäžã
.bound
ã
.boundAll
ãããããã£ã«ãã€ã³ããããèŠçŽ ãŸãã¯èŠçŽ ã®ã³ã¬ã¯ã·ã§ã³ãããããè¿ã
.unbindElement
ã¯ãããããã£ãšèŠçŽ ã®éã®ãªã³ã¯ã
.unbindElement
ããŸã
...ãªã©ã
ããŒãžã§ã³0.0.Xã䜿çšããçç±
ãã®ãããžã§ã¯ãã¯ãå¥ã®ååã§1幎以äžéçºãããŠãããšããäºå®ã«ãããããããåããŠïŒãã®èšäºã§ïŒåããŠçŽ¹ä»ãããããã§ãã
次ã¯ïŒ
次ã®èšäºã§ã¯ããããªã§ãŒã·ã«ãåã«äŸ¿å©ãªé¢æ°ã®ã»ãããšããŠã§ã¯ãªããã¯ã©ã¹ã«åºã¥ããæ¬æ Œçãªãã¬ãŒã ã¯ãŒã¯ãšããŠäœ¿çšããŠãæåã®ã¢ããªã±ãŒã·ã§ã³ãäœæããæ¹æ³ã説æããã¯ã©ã¹ãæ£ç¢ºã§ããçç±ã説æããŸãïŒãã®åé¡ã«é¢ããå°å
ã®inãã«ç²ŸéããŠããŸãïŒã
次ã«ãããŒã¿ãåŠçãã
MK.Array
ããã³
MK.Object
ã«ã€ããŠèª¬æããŸãã
ãã®åŸãèªè
ãèå³ãæã£ãŠãããªããéæ³ã®ä»çµã¿ãšãIE8ã§
Object.defineProperty
ãµããŒããå®è£
ããæ¹æ³ã説æããŸãã
æåŸãŸã§èšäºãèªãããšãã§ãããã¹ãŠã®äººã«æè¬ããŸãã 幞éãšæåããã³ãŒãã£ã³ã°ã