Die Beispiele in diesem Artikel beschreiben, wie Konflikte zwischen Vorlagenansichten und AngularJS gelöst werden. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Problem:
In der MVC-Ansicht von PHP müssen wir
einige Daten an die Vorlage übergeben während des Ladevorgangs:
Zum Beispiel:
Hier ist ein bestimmter Controller
$data['users'] = {something from databases}; $this->load->view('home/index',$data);
Hier ist der entsprechende Ansicht
<div ng-controller="loadData"> <ul> <!--1. 初始化的时候我们需要使用下面这句--> <?php foreach(users as user):?> <li><?=$user->name?>:<?=$user->email?><li> <?php endforeach?> <!--2. 但是结束后 我们需要使用这句 通过ajax 更新 --> <li ng-repeat="user in users">{{user.name}}:{{user.email}}</li> </ul> </div>
Nun stellt sich also die Frage, wie mit dem Widerspruch zwischen 1 und 2 umzugehen ist?
Die erste Lösung:
<script> var usersPrefetch = [ <?php foreach(users as user):?> {"name": "<?=$user->name?>", "email": "<?=$user->email?>"}, <?php endforeach?> ]; </script>
Wir speichern die von PHP übergebenen Daten in Variablen und übergeben dann
$scope-Zuweisungen ein Wert dafür, ok
Die zweite Lösung (empfohlen):
Wir verwenden das ng-if-Attribut, um unser Problem zu lösen, und rufen PHP-Daten auf, wenn Benutzer nicht definiert sind
Nach Ajax Wenn die Übertragung abgeschlossen ist, verwenden Sie unsere Daten und definieren Sie $scope.users
<ul ng-if="!users"> <?php foreach(users as user):?> <li><?=$user->name?>:<?=$user->email?><li> <?php endforeach?> </ul> <ul ng-if="users"> <li ng-repeat="user in users">{{user.name}}:{{user.email}}</li> </ul>