SmartAdmin模板页面功能运行两次Bug

时间:2018-06-29 07:46:59

标签: javascript angularjs ajax smartadmin

我正在使用smartAdmin模板开发Web应用程序,该模板是完全基于ajax的模板,您可以检查演示here。我在此模板中面临一些困难。当我在某些页面上编写一个javascript函数时,它可以在所有页面上使用。

例如

$(document).on('click', '#elementA', function(){
 alert('Hello World');
});

在其他页面上也具有相同ID的元素上工作,很难为所有元素赋予不同的ID,因为这是一个非常大的项目,而且我已经有6个月的时间了,所以我思考了一下,找出解决方案为每个页面提供唯一的ID,并编写这样的脚本。

$(document).on('click', '#pageA #elementA', function(){
   alert('Hello World');
});

我以为我解决了这个问题,但是功能并未停止在其他页面的元素上工作。但是当我第二次访问#PageA时,该函数运行两次。实际上,模板将所有用户定义的函数存储在本地内存存储中(我想我对此不太确定)并一直存储,直到我们不刷新整个模板为止。

1 个答案:

答案 0 :(得分:1)

好的,经过长时间的研发,我自己解决了这个问题。 我使用loadscript()函数来防止两次不必要地加载脚本。

我将所有脚本写到一个文件中(现在我将在一页中有两个视图页。)

之前是.. A.php-> JScript + PHP和HTML 现在就像A.php-> PHP&HTML,script / A.php-> OnlyJS

由于我正在使用codeginiter框架,并且不希望其他人也可以通过url访问它来查看js,所以我使用了此过程。

查看文件中的代码

loadScript("<?php echo site_url('processor/load_script/path_to_folder/script/add'); ?>");

处理器控制器上的功能

public function load_script($path)
{
    $last_segment = count($this->uri->segment_array());
    $path = '';
    for($i=3;$i<=$last_segment;$i++)
    {
        $path .= '/'.$this->uri->segment($i);
    }
    $this->load->view('core/ajax'.$path);
}