Slidesjs (カルーセルのような) スライド アニメーションを画像リスト (以下に示す) に適用しようとすると、エラーが表示され、画像がスライド アニメーションなしで積み重ねられたようになります。Web Api によって供給される Knockout バインドされたイメージ リストでイメージ スライダーを試した人はいますか?
キャッチされていない typeerror は未定義のプロパティ 'style' を読み取ることができません (下の slidesControl[0].style[transform] で)
if (this.data.vendorPrefix) {
prefix = this.data.vendorPrefix;
transform = prefix + "Transform";
duration = prefix + "TransitionDuration";
timing = prefix + "TransitionTimingFunction";
ERROR LINE-->slidesControl[0].style[transform] = "translateX(" + direction + "px)";
...[Script goes on]
slidesContainer[0] にスタイル属性がないため、エラーが発生します。次のように設定されているため、slidesContainer もありません。
slidesControl = $(".slidesjs-control", $element)
問題は、slidesjs-control が Slidesjs プラグインによって生成されない理由です。何か案が?
編集(ヒント)
私は、slidesjs プラグインの初期化時に、#slider div に要素がないことを発見しました。しかし、slidesjs が開始する前に、Knockout がそれを埋める必要があります。ノックアウトコードが最初に来るからです。SlidesJs の Init メソッドでコンソールに $("#slider") と入力して Enter キーを押すと、次のようになります。
<div id="slider" data-bind="foreach: banners" style="overflow:hidden;"></div>
私のHTML:
<div class="webTV">
<div class="slideBox">
<div id="slider" data-bind="foreach: banners">
<a data-bind="attr: { href: $data.Href, target: $data.Target }">
<img data-bind="attr: { src: $data.ImageUrl }" width="728" height="288" alt="" />
</a>
</div>
</div>
</div>
私の Slidesjs スクリプト:
$(window).load(function() {
$('#slider').slidesjs({
width: 728,
height: 288
});
});
私のノックアウト スクリプト:
function BannerViewModel() {
var self = this;
self.banners = ko.observableArray([]);
var baseUri = '/api/Home/GetSliderBanners';
$.getJSON(baseUri, function (data) {
self.banners(data.SliderBanners);
});
}
$(document).ready(function () {
ko.applyBindings(new BannerViewModel(), document.getElementById('slider'));
});