能够使用knockout js动态隐藏/显示页面上的元素

时间:2014-07-17 03:09:50

标签: javascript jquery html knockout.js

编辑:我根据反馈更新了我的绑定。

我的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函数?

非常感谢任何帮助。

0 个答案:

没有答案