我在我的视图模型上定义了以下函数,它检查数组中的项是否是图像以及它是否是数组中的第一项:
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 -->
答案 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);