从基因敲除观察数组中,我在浏览器窗口中显示图像列表。当用户点击图像时,我希望图像弹出(更大)以便更好地观看,然后可以再次点击该图像以解散。Knockout JS - 单击排列图像
我已经在很大程度上得到了这个工作... BUT。弹出窗口始终显示第一个图像。
HTML
<div data-bind="visible: favouritesArrayVisible">
<div class="panel-heading">
<h2 class="panel-title">Your favourites as cameras for display</h2>
</div>
<div data-bind="foreach: favouritesWithCamerasArray">
<div class="panel panel-wrapper" style="height=260px; width=%;">
<div class="panel-body" style="display:inline-block text-align:left;">
<a href="#" data-bind="click: $parent.overlayImageOpen">
<img class="camera" data-bind="attr : {src: fields.url.value}, {alt: fields.title.value}"/>
</a>
<div id="overlay"></div>
<div id="popup">
<a href="#" data-bind="click: $parent.overlayImageClose">
<img class="cameraPopup" data-bind="attr : {src: fields.url.value}, {alt: fields.title.value}"/>
<center><span data-bind="text: fields.title.value"></span></center>
</a>
</div>
<h4><span data-bind="text: fields.title.value"></span></h4>
<p><span data-bind="text: fields.url.value" style="word-wrap: break-word;"></span></p>
<div data-bind="if: fields.location.value">
<p><span data-bind="text: fields.location.value.longitude"></span>,<span data-bind="text: fields.location.value.latitude"></span></p>
</div>
<button data-bind="click: $parent.deleteFavouriteCameraByCamreaRecord" class="btn btn-primary pull-right">Delete Favourite</button>
</div>
</div>
</div>
JavaScript支持
self.overlayImageOpen = function(camera) {
console.log('Yes overlayImageOpen >' + camera.fields.title.value +'<');
var overlay = document.getElementById("overlay");
var popup = document.getElementById("popup");
overlay.style.display = "block";
popup.style.display = "block";
}
self.overlayImageClose = function() {
console.log('Yes overlayImageClose');
var overlay = document.getElementById("overlay");
var popup = document.getElementById("popup");
overlay.style.display = "none";
popup.style.display = "none";
}
这就像overlayImageOpen和overlayImageClose绑定到阵列中的第一项。我想我希望他们被动态绑定或类似的东西?
- 大卫
反馈意见。我弄清楚了重复的“弹出” - 当然我不知道该怎么处理它们。看起来我已经有了一个性能提升回合。 :-) 谢谢。 –
如果你认为这是答案,你能把它标记为一个吗? – kasperoo