В настоящее время все мои ярлыки выглядят примерно так:
<label data-bind="css: { notdone: FirstName.isModified() && !FirstName.isValid(),
done: FirstName.isModified() && FirstName.isValid() }">FirstName</label>
Я хотел бы создать пользовательскую привязку, чтобы извлечь это дублирование по меткам без повторной реализации привязки CSS.
Могу ли я использовать привязку CSS в своей пользовательской привязке?
Если нет, то я буду заново изобретать колесо, чтобы избавиться от некоторого дублирования, например:
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");
}
}
FirstName
является наблюдаемым, передайте его вместе с меткой, которую вы хотите использовать, в шаблон и используйте версию динамического класса привязки css. См. скрипку. - person Origineil   schedule 09.04.2014