编辑:我根据反馈更新了我的绑定。
我的Web应用程序上有一个子页面,我需要能够根据用户选择的过滤选项动态隐藏/显示该页面上的元素。为了做到这一点,我写了一个这样的自定义绑定:
ko.bindingHandlers.customVisible = {
update: function(element, valueAccessor){
var params = ko.utils.unwrapObservable(valueAccessor());
var show = params.method(params.data, params.searchText());
ko.bindingHandlers.visible.update(element, function() { return show; });
}
};
它的html标记是这样的:
<div class="form-group" data-bind="foreach: objects">
<div class="col-md-9 col-sm-7 col-xs-12" data-bind="customVisible: {data: $data, method: $parent.filterSyncedObjects, searchText: $parent.searchText}">
</div>
</div>
这是输入框的标记:
<input type="search" data-bind="value: searchText, valueUpdate: 'keyup'" placeholder="Enter A name to search">
'filterSearchObjects'是返回true或false的方法,具体取决于搜索是否匹配,'searchText'是包含用户输入文本的observable。这是我的问题:
当'searchText'的值发生变化时,为什么不触发customVisible.update函数?
非常感谢任何帮助。