选中复选框的knockout.js绑定选中时,将触发自定义Bing中的更新方法 var视图模型={ isChecked:ko.可观察(假); showMessage:ko.observable(); }; ko.bindingHandlers.doSomeing=function(){ 更新:函数(元素、valueAccessor、allBindingsAccessor、viewModel、bindingContext){ 如果(viewModel.isChecked){ } } };

选中复选框的knockout.js绑定选中时,将触发自定义Bing中的更新方法 var视图模型={ isChecked:ko.可观察(假); showMessage:ko.observable(); }; ko.bindingHandlers.doSomeing=function(){ 更新:函数(元素、valueAccessor、allBindingsAccessor、viewModel、bindingContext){ 如果(viewModel.isChecked){ } } };,knockout.js,Knockout.js,单击该复选框将触发自定义binging doSomeing中的更新方法,为什么 但是删除if(viewModel.isChecked)作用域将不会触发更新方法。KO绑定中的更新方法在计算的可观察范围内执行。因此,任何被访问其值的可观察对象(如viewModel.isChecked(),在您的情况下,仅执行viewModel.isChecked将不会访问该值,因此您的问题中可能有一个输入错误),将成为一个依赖项,并导致绑定的更新函数再次运行 请注意:一个元素上的所有绑定实际上都是在一个单独的计算机

单击该复选框将触发自定义binging doSomeing中的更新方法,为什么


但是删除if(viewModel.isChecked)作用域将不会触发更新方法。

KO绑定中的
更新
方法在计算的可观察范围内执行。因此,任何被访问其值的可观察对象(如
viewModel.isChecked()
,在您的情况下,仅执行
viewModel.isChecked
将不会访问该值,因此您的问题中可能有一个输入错误),将成为一个依赖项,并导致绑定的更新函数再次运行


请注意:一个元素上的所有绑定实际上都是在一个单独的计算机中运行的,因此,每当依赖项发生变化时,该元素上的所有绑定都将再次运行其更新函数。每次都会跟踪这些依赖项,因此它们可以随时间而更改。在Knockout 3.0中,绑定将在单个元素上独立运行。

html对此非常有用。如果您可以使用您尝试执行的操作生成一个JSFIDLE(),则更好。当单击复选框但不跳格更新方法时,我如何在更新方法中使用viewModel.isChecked。因为我必须为viewMdel.isChecked属性设置一些条件
var viewModel={
   isChecked:ko.observable(false);
   showMessage:ko.observable();
};

ko.bindingHandlers.doSomeing=function(){
   update:function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext){

      if(viewModel.isChecked){

       }

   }
};

<pre>
<input type="checkbox" data-bind="checked:isChecked"></input>

<input type="text" data-bind="doSomeing:showMessage"></input>
</pre>