2013-08-15 2 views
9

Got semplice ViewModel:funzione run KnockOut sul valore cambiato

function viewModel() { 
    enabled: ko.observable(false); 
    ... 
} 

e un po 'di legame come:

<input data-bind="hasFocus: enabled" /> 

e voglio eseguire alcuni funzione di messa a fuoco, e altri a fuoco perse (o = abilitati vero/falso) ma eseguito quando il valore cambia. Qualche aiuto?

risposta

14

Si potrebbe iscriversi alla funzione abilitata, come ad esempio:

enabled.subscribe(function(newValue) { 
    if(newValue) { // Has focus 

    } else { 
     // No focus 
    } 
}); 
0

In genere, una buona soluzione è quella di iscriversi al tuo osservabili e gestire la logica là come:

enabled.subscribe(function(newValue) { 
    if (newValue) { 
     //do something if it is true 
    } 
    else { 
     //do something if false 
    } 
}); 
+3

Letteralmente la stessa risposta esatta, ma con diversi commenti ! :) –

2

evento: { mouseover: enableDetails, mouseOut: disableDetails}

Prova questo:

<input data-bind="hasFocus: enabled, event: { focus: onFocus, blur: onBlur}" /> 

se si desidera monitorare modifica del valore si dovrebbe fare in viewmodel:

this.enabled.subscribe(function(newValue){ 
    //use newValue 
}); 

Nota: avete errore di sintassi nel ViewModel:

enabled: ko.observable(false); <--