如何将数据从php添加到Angular?

时间:2015-04-18 12:28:43

标签: angularjs

我需要将php中数组的数据添加到Angular JS中。我试过了:

HTML

<? foreach ($new->images as $val): ?>
        <div ng-init="func(<?=$val?>)"></div>
<? endforeach; ?>

Angular JS:

$scope.addToSlide = function (src, desc){
      obj = {};
      obj.src = src;
      obj.desc = desc;
      $scope.photos.push(obj);
};

最好的办法是什么?

4 个答案:

答案 0 :(得分:1)

ng-init并非真正用于您要做的事情。该手册明确指出仅将其用作ng-repeat的一部分。

混合php和javascript充其量也是挑战。尝试用php返回json对象来思考更多。

还尝试将所需数据作为常量或值注入。类似的东西:

<script src="app.js"></script>
<script>
(function(angular) { 'use strict';

  var appModule = angular.module('ceradSraApp');

  appModule.constant('ceradApiPrefix','<?php echo $apiPrefix; ?>');

})(angular);
</script>

因此,ceradApiPrefix现在可以在任何需要的地方注入。在php中做任何你需要做的事情,把你的数据煮成一个回声。

答案 1 :(得分:0)

您是否尝试过以下操作?

<div ng-init="images = <?=$images ?>"></div>

答案 2 :(得分:0)

这是你对Angular所做的事情 - 从外面弄乱HTML。

Angular的方法是使用简单的Angular模板,并使用Angular的服务(例如$http)来提取数据。

然后Angular的$http将向您的服务器发送请求,您的PHP将使用Angular将接收和使用的数据(JSON)进行响应。

而不是foreach您使用ng-repeat 通常不建议使用ng-init(有关详细信息,请参阅页面)。

答案 3 :(得分:0)

我用php和angularjs制作了一些网络应用程序。我这样做的方法如下:

将数据从php传递到angular和html中的数组时。

我可以在php中使用这个脚本:

<?php
  require_once '../config.php';
  $id = $_GET['id_project'];
  $query = "SELECT *
        FROM `activity_planned` as A,`user` as U
        WHERE A.id_user = U.id_user and A.id_project = $id";
  $answer = $mysqli->query($query);
  $result = array();
  foreach( $answer as $row ){
    array_push($result,$row);
  }
  echo $json_response = json_encode($result);
?>

然后,调用此脚本的angular函数使用$ http服务:

$scope.getActivities = function() {
 $http({
   url: './scripts/getters/get-activities-by-project-id.php',
   method: 'GET',
   params: {
     id_project: $stateParams.projectId
   }
 })
 .success( function( response ) {
   $scope.activities = response;
 });
};

通过在html中使用ng-repeat指令,所有这些&#34;活动&#34;将显示:

<div ng-repeat="item in activities track by $index">
    <p>{{item.id}}</p>
    <p>{{item.name}}</p>
</div>

您需要将数组编码为json并在php中回显结果。

这&#34; echo&#34;将作为一个返回函数,$ scope函数中的response参数将从中接收数据。