组绑定以避免代码重复

时间:2013-12-07 13:24:28

标签: knockout.js

是否可以对绑定进行分组?

e.g。 enablecss绑定都指的是导致重复的相同条件。

<div data-bind="enable: errors().length == 0, css: { green: errors().length == 0 }">

e.g。对多个元素的绑定指的是相同的条件。

<div data-bind="css: { green: errors().length == 0 }">
<div data-bind="css: { blue: errors().length == 0 }">
<div data-bind="css: { red: errors().length == 0 }">

1 个答案:

答案 0 :(得分:3)

您可以使用ko.computeddocumentation)来保存条件逻辑:

this.noErrors = ko.computed(function(){
    return this.errors().length == 0;
}, this);

然后您可以将绑定简化为:

<div data-bind="enable: noErrors, css: { green: noErrors }">

<div data-bind="css: { green: noErrors }">
<div data-bind="css: { blue: noErrors }">
<div data-bind="css: { red: noErrors }">

或者您可以创建自己的custom bindings,也可以使用新的预处理功能extend Knockout's binding syntax来封装自定义“分组”逻辑。