我正在使用 SilverStripe 3.0 CMS,我需要在 CMS 中包含 Google map 。
我正在关注 this steps ,而且它有点旧,official documentation在当前版本的SilverStripe中使用相同的方法(至少它似乎是当前版本的文档)。
问题出在这部分代码中:
Behaviour.register({
"#Form_EditForm" : {
initialize : function() {
this.observeMethod("PageLoaded", this.adminPageHandler);
this.adminPageHandler();
},
adminPageHandler : function() {
initialize();
}
}
});
首先,没有定义Behavior。我需要手动包含框架内的 behavior.js 文件。但是现在,我得到一个类型错误:
this.observeMethod is not a function
有人可以提示我如何在 SilverStripe CMS 中打开页面编辑器时调用 javascript 函数吗?
最佳答案
您提到的“Behaviour.register”调用已明确弃用,并且在核心代码中不再可用,因此需要在此处更新文档。
不幸的是,我找不到替代此行为的记录方式,但目前,根据您第一手提到的论坛帖子中的方法,以下内容应该对您有用:
在此处找到添加的“initGoogleMaps.js”脚本:
function getCMSFields() {
Requirements::javascript('mysite/javascript/initGoogleMaps.js');
...
在此脚本中,删除 Behaviour.register...
block ,并将 initialize
函数移至外部 document.ready(或简单地删除 document.ready 部分),因此 initialize
是全局可用的(您可以考虑重命名它)。
然后,在 getCMSFields
中添加以下内容:
$fields->addFieldToTab('Root.Content', new LiteralField('js', '<script>initialize();</script>'));
这将确保每次在 cms 中呈现页面的“编辑 View ”时调用 initialize
函数。
第一个
关于javascript - 如何在 Silverstripe CMS 中使用 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11994174/