用交替的课程淘汰foreach

时间:2012-10-09 13:11:26

标签: knockout.js

在淘汰赛中有更多知识渊博的人能告诉我,我是否以正确的方式这样做?

我试图在foreach指令中交替添加float left和float right类 - 这是我的绑定。 我离开马克了吗?有更好的方法吗?

<a data-bind="css:{'pull-left':$index()%2 == 0,'pull-right':$index()%2 == 1}, attr:{href:$data.url}">

爱淘汰赛 - 顺便说一下

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:4)

你这样做的方式会起作用。如果您想要一种更简洁的方法,那么您可以在视图模型上创建一个返回正确值的计算observable,或者更好的是为您处理此逻辑的自定义绑定。

自定义绑定的示例,您可以将要用作索引的内容传递给:

ko.bindingHandlers.float = {
    init: function(element, valueAccessor, allBindings, data, context) {
        var index, floatValue;

        index = valueAccessor();

        floatValue = ko.computed(function() {
           var left = ko.utils.unwrapObservable(index) % 2 === 0; 
           return left ? "left" : "right";
        });

        ko.applyBindingsToNode(element, { 
            style: {
                cssFloat: floatValue
            }                
        });
    }        
};

以下是一个示例:http://jsfiddle.net/rniemeyer/B8YHc/

如果你想使用bootstrap的类,那么你可以这样做:http://jsfiddle.net/rniemeyer/VdLNQ/。他们只是向左/向右浮动,所以无论哪种方式都应该没问题。