0

ビューモデルに次の関数を定義して、配列内のアイテムが画像であるかどうか、および配列内の最初のアイテムであるかどうかを確認します。

    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 -->
4

1 に答える 1

2

これは、外部のforeachループまたはそれが何であれ問題であるに違いないと思います...または、「media」だけでなく「self.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);
于 2013-01-29T01:08:56.430 に答える