我目前的所有标签看起来都是这样的:
<label data-bind="css: { notdone: FirstName.isModified() && !FirstName.isValid(),
done: FirstName.isModified() && FirstName.isValid() }">FirstName</label>
我想创建一个自定义绑定(bind)来提取标签之间的重复项,而无需重新实现 CSS 绑定(bind)。
我可以在自定义绑定(bind)中使用 CSS 绑定(bind)吗?
如果没有,那么我将重新发明轮子,以消除一些重复,如下所示:
ko.bindingHandlers.validationLabel =
{
update: (element, valueAccessor) =>
{
var value = valueAccessor();
var isModified = value.isModified();
var isValid = value.isValid();
$(element).removeClass("done notdone");
if (!isModified)
return;
$(element).addClass(isValid ? "done" : "notdone");
}
}
最佳答案
您可以从您自己的内部调用内置绑定(bind)。像这样的东西应该在你的更新方法中工作来替换你的 jQuery 代码:
ko.bindingHandlers.css.update(element, function() {
return { done: isValid, notdone: !isValid }
});
具有更多详细信息的相关问题:Can I create a custom binding that uses other bindings in knockout.js
关于knockout.js - 您可以在自定义绑定(bind)中设置现有的 Knockout 绑定(bind)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22939774/