Knockout数据绑定自定义组件

时间:2017-05-17 05:08:56

标签: knockout.js data-binding

我在knockout中有一个自定义组件,它使用以下方式(我继承了这段代码)

 <div data-bind="template: {
                name: 'error-message', data: {
                    isModified: isUserNameValid,                        
                    isValid: function () { return !isUserNameValid(); }
                }, as: 'field'
            }">

我对以下代码的作用感到有点困惑

 isValid: function () { return !isUserNameValid(); }

这与仅仅指定

有何不同
 isValid: !isUserNameValid()

1 个答案:

答案 0 :(得分:1)

这些结构绝对相同且对Knockout有效。所以你可以使用较短的一个。

请注意,最好避免在标记中编写复杂的函数。应将此类函数移动到视图模型对象。

var model = { isUserNameValid: ko.observable() };
ko.applyBindings(model);

setTimeout(function() { model.isUserNameValid(true); }, 2000);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script>

<script type="text/html" id="error-message">
<div>Template content</div>
<div data-bind="text: isValid()"></div>
</script>

<div data-bind="template: {
                name: 'error-message', data: {
                    isModified: isUserNameValid,                        
                    isValid: function () { return !isUserNameValid(); }
                }, as: 'field'
            }">