#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-виджеты, делают их нулевыми. Я имею в виду, что они равны нулю, когда я получаю их значения. Но в любом случае, спасибо за ваш ответ 🙂