вызов функции после загрузки представления в CodeIgniter

#codeigniter #view

#codeigniter — инициализатор кода #Вид

Вопрос:

у меня есть этот код.

 function index(){
    $this->load->helper('url');
    $this->load->view('EIM/home');
        $this->loadGraphs();
}
 

но сначала он выполняет loadGraphs. Я действительно понятия не имею, почему. Пожалуйста, помогите мне. Мне трудно исправлять свои коды. спасибо 🙂

вот моя функция loadGraphs:

`функция loadGraphs(){ $this->load->helper(‘url’); $ctr=0; $base_url = base_url(); $xml=новый DOMDocument; $xml->load(«».$base_url.»assets/EIM/xml/defaultChart.xml «); $module_names=$xml->getElementsByTagName(«имя»); $len_modules=$module_names->длина; $ctr_module=0; в то время как($ctr_moduleitem($ctr_module) ->getElementsByTagName(«отчет»); $len_reports=$reports->длина; $ctr_report=0; в то время как($ ctr_reportitem($ctr_module)->getAttribute(«значение»); $title=$reports->item($ctr_report)->getElementsByTagName(«заголовок») ->item(0) -> nodeValue; $dashboard_selected=$reports->item($ctr_report)->getAttribute(«идентификатор»); если($dashboard_selected==»панель мониторинга»){ echo » $title $module»; ?> параметры var=eval(getArray($title,$module));?>) элемент ($ctr_report)->getElementsByTagName(«диаграммы») -> элемент(0)->getAttribute(«значение»); $defaultChart=$отчеты->элемент ($ctr_report)->getElementsByTagName(«диаграммы»)-> элемент(0)->getAttribute(«значение»); echo «$defaultChart»; $charts=$reports->item($ctr_report)->getElementsByTagName(«charts»)->item(0)->getElementsByTagName(«chart») ; $len_charts=$диаграммы->длина; $ctr_chart=0; while($ctr_chartitem($ctr_chart)->Значение узла; echo » «;

                                 $ctr_chart  ;
                            }
                            echo"
                                <input type='submit' value='Set Chart as Default' onClick='set_default_chart('chart$ctr',$ctr_module,$ctr_report)'/>
                            ";
                            echo "
                            <button class='btn btn-box-right' data-toggle='collapse' data-target='#container".$ctr."'>
                                <i class='icon-reorder'></i>
                            </button>
                        </div>
                        <div class='box-content box-list collapse in'>
                            <div id='container".$ctr."' style='min-width: 310px; height: 400px; margin: 0 auto'></div>
                        </div>
                    </div>
                </div>
            ";

            $ctr  ;
            }
            $ctr_report  ;
        }
        $ctr_module  ;
    }
    echo "<label id='containers' value='$ctr'></label></div>";
}`
 

это довольно долго, но что он делает, так это то, что он делает контейнеры готовыми, и мой java-скрипт доступен для загрузки и полного отображения графиков. это в функции document.ready. возможно ли, что он расставляет приоритеты для кодов, которые имеют функцию, перед загрузкой представления?

Комментарии:

1. Это может быть полезно для написания вашего loadGraphs кода

2. о да. собираюсь отредактировать свой вопрос.

Ответ №1:

Вы могли бы попробовать загрузить результаты функции loadGraphs() через AJAX из представления после его загрузки? Поэтому в основном удалите этот вызов после $this-> load-> view(‘EIM /home’), и в том же представлении, в documentReady, используйте простой jQuery.Получите функцию для извлечения нужного вам кода из представления. Это загрузится, если после просмотра 100%.

http://api.jquery.com/jquery.get/

Не уверен, что ваш поток — лучший подход, но это должно сработать.

Надеюсь, это поможет! 🙂

Комментарии:

1. Я пробовал это, но загруженные ajax данные, такие как html-виджеты, делают их нулевыми. Я имею в виду, что они равны нулю, когда я получаю их значения. Но в любом случае, спасибо за ваш ответ 🙂