为我的锚链优化我的敲除绑定

时间:2013-03-25 17:14:48

标签: knockout.js

我有以下淘汰代码:

<!-- ko if: isActive -->
<a data-bind="attr: { href: hash }, html: name" class="bg-color-blue fg-color-white"></a>
<!-- /ko -->

<!-- ko ifnot: isActive -->
<a data-bind="attr: { href: hash }, html: name" class="bg-color-grayLight"></a>
<!-- /ko -->

正如你所看到的,除了'class'不同之外,这是完全相同的锚。

我想知道是否可以简化我的代码以避免重复此锚点?是否可以使用一个锚点并在其中设置条件?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

使用css binding

<a data-bind="attr: { href: hash }, 
              html: name, 
              css: { 'bg-color-grayLight': !isActive(), 
                     'bg-color-blue fg-color-white': isActive() }">
</a>

示例: http://jsfiddle.net/CCNtR/16/

或者,您可以使用带有attr绑定的条件语句并设置整个类属性:

<a data-bind="attr: { href: hash, 'class': isActive() ? 
                  'bg-color-blue fg-color-white' : 'bg-color-grayLight' }, 
              html: name">
</a>

示例: http://jsfiddle.net/CCNtR/17/

第二条路线的缺点当然是在解析绑定时会删除任何其他类。我坚持使用第一种方法。