2016-04-22 54 views
0

在另一个SO问题中,已在块(Page selector (block development))内使用该答案。但是,我们如何在仪表板中应用这个例子?concrete5(5.7)页面选择器事件 - 在仪表板中

变量“Concrete”和“ConcreteEvent”在管理员中似乎未定义。解决这个问题的最好方法是什么?

实施例的代码(使用5.7.x):

Concrete.event.bind('ConcreteSitemap', function(e, instance) { 
    Concrete.event.bind('SitemapSelectPage', function(e, data) { 
     if (data.instance == instance) { 
      Concrete.event.unbind(e); 
      alert("You've selected a page! " + data.cID); 
     } 
    }); 
}); 
+0

这没有任何工作负载,让我去寻找(因为它为你工作)。我注册并要求我的JS资产与AssetList :: getInstance() - > register()&$ this-> requireAsset()。出于某种原因,这些获得注册的ABOVE events.js,app.js等等。所以我需要弄清楚的是,如何将它们向下移动(或其他移动)。我在我自己的requireAsset之前放了一个$ this-> requireAsset('core/app'),但这只是丑陋而不是方式。是否有可能在其他人之后要求我的资产? –

+0

这真的很奇怪,因为在我的控制器中我根本没有调用任何资产(除了我的拥有者) - 但它是一个包装,也许这就是原因。 1时刻我测试 –

+0

好吧,你是对的:在单页中它不起作用,但是它在一个包中...... sry不能帮你 –

回答

1

它看起来像Concrete.event总是被加载在仪表板页面。如果你担心加载顺序,你有几个选择。

  1. 创建一个资产组并首先将事件js资产。如果您随后包含而不仅仅是资产 concrete5应该首先管理加载事件。
  2. 使用jquery的$(function() { ... })这样的onload事件。这会比你期望的时间稍晚一些,但它会在加载事件之后发生。
  3. Set the position of the asset to \Concrete\Core\Asset\Asset::ASSET_POSITION_FOOTER这将导致包含在页脚,而不是头部的JS允许的情况下JS总是在第一

希望帮助雅