我不确定我是否正确添加了我的 JS 资产,如果不是,我希望得到一些建议。
在 octoberCMS 中,我创建了一个使用 Google Maps API 的自定义 formWidget。
我在一个子表单中使用我的 formWidget,该子表单在需要时通过 AJaX 作为模式呈现。
如果我在我的小部件类中使用以下代码:
public function loadAssets(){
$this->addJs("http://maps.googleapis.com/maps/api/js?key=myappkeyhere&libraries=places");
$this->addJs('js/geocomplete/jquery.geocomplete.min.js');
$this->addJs('js/addressinput.js');
$this->addCss('css/addressinput.css');
}
JS 在页面加载时加载,而不是在小部件呈现时加载。这会产生以下问题:
- google-maps API 返回一个错误,指出它已被多次加载。
- 与子元素中的 DOM 元素相关的事件失败,因为在调用表单之前元素不在 DOM 中。
我正在使用的解决方法是将我的 JS 嵌入到 formWidget 部分中。
当它是子表单的一部分时,有没有办法让 addJS 方法对 formWidget 起作用?