我在knockout中有一个自定义组件,它使用以下方式(我继承了这段代码)
<div data-bind="template: {
name: 'error-message', data: {
isModified: isUserNameValid,
isValid: function () { return !isUserNameValid(); }
}, as: 'field'
}">
我对以下代码的作用感到有点困惑
isValid: function () { return !isUserNameValid(); }
这与仅仅指定
有何不同 isValid: !isUserNameValid()
答案 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'
}">