Como nós sabemos, o bind handler “value”, está presente há um bom tempo no knockoutjs. A partir da versão 3.2 do knockoutjs, foi introduzido o bind handler “textInput”.
Basicamento, a diferença entre eles é: Um tem mais eventos atrelados, porem com a mesma funcionalidade.
Quando utilizamos “textInput”, em vez de “value”, garantimos que o valor da propriedade observable irá atualizar imediatamente, ao ocorrer os seguintes eventos:
keyup, keydown, dragend, keydown, dragdrop, drop e change.
Até então, poderíamos utilizar “valueUpdate” do bind handler “value”, assim era possível determinar eventos atrelados, haveria atualização da propriedade observable.
Mas segundo a documentação do knockoutjs, é melhor utilizar “textInput”, assim o framework cuidará dos eventos corretamente, já que os navegadores são inconsistentes na forma de vincular eventos (lembre-se que o knockoutjs não utiliza jQuery, ele mesmo manipula o DOM).
Um exemplo simples, para ficar claro: http://jsfiddle.net/8d2thzbc/2.
No exemplo, temos uma propriedade observable, chamada “nome”. No HTML, temos 2 tags “input” do tipo “text”; O primeiro utiliza “textInput”, o segundo utiliza “value”. E mais abaixo, temos o valor da propriedade “nome”, através do bind handler “text”. Ao digitar no primeiro campo, você perceberá que o valor é atualizado imediatamente. Já no segundo, é atualizado somente quando o evento “blur” é chamado.
Espero ter ajudado!
Até a próxima pessoal!