为什么我的ng-repeat不起作用?

时间:2015-09-07 15:59:47

标签: angularjs cordova ionic-framework

我试图通过执行services.js中的以下代码来显示驻留在远程数据库中的项目:

  <?php
  $query = mysql_connect("localhost","root","toor");
  mysql_select_db("busticket",$query);
  $result=mysql_query("Select * from ticket_reservation WHERE   validate_status='Yes'") or die(mysql_error());
  while($row=mysql_fetch_array($result))
  {
   echo "<tr><td><input type='checkbox' id='name'  name='name[]'    value=".$row['id']."</td><td>".$row['userid']."</td><td>".$row['busid']."</td> <td>".$row['numberofseats']."</td></tr>";

 }
 echo"<tr><td><input type='submit' name='submit' Value='Validate Tickets'> </td></tr>";
 if(isset($_POST['name']))
 {
 $Name=$_POST['name'];
 foreach($Name as $N)
  if(isset($_POST["submit"]) && $_POST["submit"]!="") {
   $usersCount = count($_POST["name"]);
   for($i=0;$i<$usersCount;$i++) {
   mysql_query("UPDATE ticket_reservation set validate_status='Yes'");
  }

   ?>

我尝试在控制台中打印结果,并返回正确的行。然后,我的控制器将我之前的工厂函数的结果分配给一个名为MYRESULT的变量,如下所示:

.factory('Users', ['$http', function($http) {
    var res = $http.post("http://mydomain/API.php?requestType=Location_Search", { "search": "my search"} );

    return {
        all: function() {
          return res;
        },
        get: function(id) {
            for (var i = 0; i < res.length; i++) {
                  if (res[i].U_ID === parseInt(id)) {
                      return res[i];
                  }
            }
            return null;
        }
    };
}]);

现在,一切都应该没问题,我的JSON数组在MYRESULT变量中。但是,在我看来,我调用ng-repeat指令来遍历我的JSON数组的每一项,但我什么都没得到。我的html代码如下:

.controller('DashCtrl', function($scope, Users) {
    $scope.MYRESULT = Users.all();
    //console.log(Users.all()); it is returning the correct rows
})

有人可以告诉我我的代码有什么问题。我相信,我的错误应该在视图中,因为正如我之前提到的,控制台中的JSON数组是正确的。

注意:DashCtrl是我的标签的控制器。

谢谢!

1 个答案:

答案 0 :(得分:2)

那是因为帖子和其他方法一样,正在回复一个承诺。你应该链接.then()函数并从那里得到结果。

Doc:https://docs.angularjs.org/api/ng/service/ $ http#post

示例:

$http.post("mydomain/API.php?requestType=Location_Search";, { "search": "my search"} )
.then(
    function(response) {
        // response is what you actually want
        $scope.MYRESULT = response;
    },
    function(errorResponse) {
        // this second function is not mandatory, it's called if the server responds with an error status. If this function is not provided, all responses will be caught by the first function
    }
);