10

得到简单的viewModel:

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

和一些绑定,如:

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

我想在焦点上运行一些功能,而在焦点丢失(或启用=真/假)时运行其他功能,但在值更改时运行。有什么帮助吗?

4

3 回答 3

18

您可以订阅您启用的功能,例如:

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

   } else { 
       // No focus
   }
});
于 2013-08-15T13:06:29.847 回答
2

事件:{ mouseover:enableDetails,mouseout:disableDetails }

尝试这个:

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

如果你想监控值的变化,你应该在 viewmodel 中进行:

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

注意:您在视图模型中有语法错误:

enabled: ko.observable(false); <--
于 2013-08-15T13:08:32.617 回答
0

通常,一个好的解决方案是订阅您的 observable 并在那里处理您的逻辑,例如:

enabled.subscribe(function(newValue) {
    if (newValue) {
        //do something if it is true
    }
    else {
        //do something if false
    }
});
于 2013-08-15T13:06:58.360 回答