我继承了一个使用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