我繼承了一個使用magento和foundation的項目。我將requirejs和骨幹包含在這個之上,並且我試圖通過主幹中的hogan(渲染)來獲得正在加載到dom中的基礎軌道畫廊。如何在我處於requirejs內的情況下調用全局加載的api?
我遇到的問題是基礎已經在magento模板之一中全局加載,並且當我在requirejs中渲染幻燈片時,軌道庫已經建好,因此它不顯示幻燈片指標。
基本上,我需要能夠調用$(document).foundation();從我的骨幹視圖中,以便每當我更改幻燈片時以某種方式重新初始化軌道容器。
這裏是正在裝載從Magento的DOM的底部,
<script type="text/javascript" src="skin/frontend/package/theme/js/foundation/foundation.min.js"></script>
<script type="text/javascript" src="skin/frontend/package/theme/js/foundation/foundation.interchange.js"></script>
<script type="text/javascript" src="skin/frontend/package/theme/js/foundation/foundation.orbit.js"></script>
<script type="text/javascript" src="skin/frontend/package/theme/js/foundation/foundation.topbar.js"></script>
<script type="text/javascript" src="skin/frontend/package/theme/js/foundation/foundation.reveal.js"></script>
這裏是我的requirejs觀點的要點和我試圖完成
define([
'generics/genericView',
'foundation',
'text!carousel.tpl'
], function(
GenericView,
foundation,
visualCarouselTpl
) {
return GenericView.extend({
'el': 'html',
'events': {
},
render: function() {
var rederedTpl = Hogan.compile(visualCarouselTpl).render({"myImages": imagePaths});
$(".my-carousel").prepend(rederedTpl);
$(document).foundation();
},
initialize: function (params) {
this.render();
return this;
},
});
});
這裏是模板
<ul data-orbit>
{{#myImages}}
<li>
<a href="#">
<img src="{{src}}" alt="{{alt}}" />
</a>
</li>
{{/myImages}}
</ul>
在這個特殊的例子中,我需要另一個fo爲了讓這個模塊看到什麼是「基礎」,我打電話給$(document).foundation();
。這似乎創造了旋轉木馬,但指標不在我相信,因爲幻燈片被包括在旋轉木馬渲染後。
綜上所述,我需要能夠做以下(最好是第一個)之一
- 納入全球基礎API的進入需要,並用它來重新初始化訃告畫廊。
- 要求所有相同的基礎文件通過require並以這種方式重新初始化軌道庫。然而,如果可能的話,我不想兩次加載基礎庫,所以我需要弄清楚如何從這個DOM首先刪除那些dom。雖然我想我可以加載他們兩次,如果它更容易。
到目前爲止,我試圖呼籲$(document).foundation();
有和沒有它被納入要求。有沒有包含到要求(因爲它沒有看到基礎)的JavaScript錯誤,並有一個JavaScript錯誤
記住基金將改變全球jQuery的那它發現。每次你需要它(或者將它包含在一個腳本標籤中)它都會嘗試這樣做。如果你做了兩次,這很有可能會導致錯誤。同時確保你沒有運行2個jQuery版本。 – mikeapr4
@ mikeapr4我相信我可能會兩次加入jquery。但這與基金會的理由相同。我不知道如何才能獲取當前的jquery版本。我嘗試使用removeItem從magento中刪除第一個加載的基礎,但是我無法使其工作,並且我對magento的瞭解有限。 – Metropolis