如何将当前项传递给“if”绑定注释表达式

时间:2013-01-29 00:19:39

标签: knockout.js

我在我的视图模型上定义了以下函数,它检查数组中的项是否是图像以及它是否是数组中的第一项:

    self.isCoverImage = function(item) {
        return item.isImage && media.indexOf(item) === 0;
    };

是否可以在注释表达式中使用if绑定在我的项模板中绑定到此?我尝试了以下内容,但没有任何内容传递给isCoverImage函数。

<!-- ko if: $parent.isCoverImage($data) -->
        <i class="img-ribbon-cover-image"></i>
<!-- /ko -->

1 个答案:

答案 0 :(得分:2)

我认为这绝对是你的外部foreach循环或它的任何问题...或者你可能需要添加'self.media'而不仅仅是'media'。

我做了一个JS小提琴,似乎按预期工作:http://jsfiddle.net/RYXdA/

这是HTML:

<div data-bind="foreach: media">
    <div>
        <span data-bind="text: id"></span>
        <!-- ko if: $parent.isCoverImage($data) -->
            <i class="img-ribbon-cover-image">Image</i>
        <!-- /ko -->
    </div>
</div>

和Javascript:

var viewModel = {
    media: [
        { id: 1, isImage: true},
        { id: 2, isImage: false },
        { id: 3, isImage: true }
    ]
};    

viewModel.isCoverImage = function(item) {
    return item.isImage && viewModel.media.indexOf(item) === 0;
};

ko.applyBindings(viewModel);