Created
June 5, 2015 12:01
-
-
Save Mausglov/b3ad57689332f10a2db9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Заметки по Матрёшке. | |
Объяснение, как же работает .bindNode: | |
возьмем пример из документации: | |
var Application = Class({ | |
'extends': Matreshka, | |
constructor: function() { | |
// связываем свойство x и текстовое поле | |
this.bindNode( 'x', '.my-input' ); | |
// связываем свойство x и блок с классом my-output | |
this.bindNode( 'x', '.my-output', { | |
setValue: function( v ) { | |
this.innerHTML = v; | |
} | |
}); | |
// если свойство "х" изменилось, сообщаем об этом в консоли | |
this.on( 'change:x', function() { | |
console.log( 'x изменен на ' + this.x ); | |
}); | |
} | |
}); | |
var app = new Application(); | |
// конец примера | |
Рассмотрим связь this.bindNode( 'x', '.my-input' ); | |
когда мы пишем | |
app.x = "some value"; | |
будет вызван setValue() из биндера, при этом в контексте .my-input ( т.е. $(this) === $('.my-input') ). Чтобы содержимое инпута изменилось, это надо вписать руками: | |
$(this).val(v); // v - первый аргумент setValue | |
когда мы вводим что-то в инпут, то будет вызван getValue(). Опять же, в контексте .my-input. То, что вернёт getValue() и будет записано в app.x . То есть можно считать, что где-то внутри происходит | |
x = getValue(); | |
Это всё надо учитывать ,чтобы не возникали странности. Нетрудно получить ситуацию, когда в инпуте одно, а в привязанном свойстве другое. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment