2013-08-15 13 views
9

Got prosty ViewModel:funkcja run KnockOut o wartości zmieniło

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

a niektóre wiązania jak:

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

i chcę uruchomić jakąś funkcję w centrum uwagi, a drugi na fokus utracone (lub enabled = true/false), ale działa, gdy zmienia się wartość. Każda pomoc?

Odpowiedz

14

Można zapisać się do włączonej funkcji, takich jak:

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

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

Zazwyczaj dobrym rozwiązaniem jest, aby zapisać się do zaobserwowania i obsługiwać logiki tam jak:

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

dosłownie dokładnie tej samej odpowiedzi, ale z różnych komentarzach ! :) –

2

imprezy: { mouseover: enableDetails, mouseOut: disableDetails}

Spróbuj tego:

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

jeśli chcesz monitorować zmiany wartość powinna to zrobić w viewmodel:

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

Uwaga: masz błąd składni w viewmodel:

enabled: ko.observable(false); <-- 
Powiązane problemy