当我在<span class="pat-moment">2016-07-30T15:10:00</span>
(eea.facetednavigation的自定义视图)中使用任何类似faceted:view
的模型模式时,模式根本不起作用,因为内容是用javascript注入的。
在https://stackoverflow.com/a/35699974/637399中@ebrehault写道,模式是在加载时初始化的,如果DOM发生变化并包含新元素,则需要调用Registry.scan($('#content-core'))
,其中Registry
为pat-registry
和#content-core
页面的注入部分。
我如何在eea.facetednavigation(https://github.com/eea/eea.facetednavigation)的上下文中这样做?它使用事件系统(参见https://github.com/eea/eea.facetednavigation/blob/master/eea/facetednavigation/browser/javascript/view.js)。我如何收听其中一个事件,我需要哪一个,然后如何调用扫描?
答案 0 :(得分:4)
您需要绑定到eea的AJAX_QUERY_SUCCESS事件:
$(Faceted.Events).bind(Faceted.Events.AJAX_QUERY_SUCCESS, function() {
Registry.scan($('#content-core'));
});
注意:当你说:
和#content-核心页面的注入部分。
这不准确,它不是特定的注射目标(当你使用模式时,并不总是注射,在你的情况下,注射是由eea.faceted管理的,这不是模式)。您可以重新扫描DOM的任何部分,只需要确保重新扫描的部分包含您要激活的模式(例如body
就可以了。)
答案 1 :(得分:1)
对于Plone 5:我在下面将代码片段注册为我的插件中 registry.xml 中的资源,将其包含在我的 registry.xml 中的bundle addon中并使用 ./ bin / plone-compile-resources 脚本重建我的插件包。
define([
'pat-registry'
], function(Registry) {
'use strict';
$(Faceted.Events).bind(Faceted.Events.AJAX_QUERY_SUCCESS, function() {
Registry.scan($('#content-core'));
});
});