Страница-шаблон SmartAdmin запускается дважды Ошибка - PullRequest
0 голосов
/ 29 июня 2018

Я занимаюсь разработкой веб-приложения в шаблоне smartAdmin, полностью основанном на AJAX-шаблоне, вы можете проверить демо здесь . я столкнулся с некоторыми трудностями в этом шаблоне. когда я пишу одну функцию javascript на какой-то странице, она работает на всех страницах.

например

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

работает с элементами других страниц, которые также имеют одинаковые идентификаторы, трудно дать разные идентификаторы всем элементам, так как это очень большой проект, и я работаю над ним с 6 месяцев, поэтому я подумал над этим и нашел решение для присвойте каждой странице уникальный идентификатор и напишите такой скрипт.

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

Я думал, что решил проблему, но функция перестала работать над элементом другой страницы. но когда я захожу на #PageA во второй раз, функция запускается дважды. на самом деле шаблон хранит всю пользовательскую функцию в локальной памяти (я думаю, я не уверен в этом) и хранит ее до тех пор, пока мы не обновим весь шаблон.

1 Ответ

0 голосов
/ 29 июня 2018

хорошо, после долгих НИОКР я решил это сам ... я использовал функцию loadcript (), чтобы предотвратить ненужную загрузку скриптов дважды.

Я написал все сценарии в один файл (теперь у меня будет две страницы просмотра для одной страницы.)

раньше это было похоже .. A.php -> JScript + PHP & HTML теперь это похоже на A.php -> PHP & HTML, script / A.php -> OnlyJS

, поскольку я использую платформу codeginiter и не хочу, чтобы другие тоже видели js, обращаясь к ней через URL, я использовал этот процесс.

код в моем файле просмотра

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);
}
...