将ng-repeat中的值与php值进行比较

时间:2015-05-05 16:34:46

标签: javascript php angularjs

我正在尝试使用从PHP中的数据库获取的数据来填充javascript中的数组。我遇到了问题,因为数组没有循环,并且在运行查询后似乎是空的。

这是我的代码:

PHP

public function getAllFavorites() {
        $json = array();
        $query = $this -> db -> get("favorites");
        $count = $query -> num_rows();
        foreach ($query -> result() as $row) {
            array_push($json, $row -> product_id);
        }
        echo json_encode($json);
    }

JAVASCRIPT

app.controller("MainController", function($scope, $http){
    $scope.favorites = getAllFavorites();
});
var getAllFavorites = function() {
    $.get("/home/getAllFavoriteIds", function(response){
        return response;
    });
}

HTML

<div ng-controller="MainController">
<ul>
    <li ng-repeat="favorite in favorites">{{favorite}}</li>
</ul>
</div>

我要做的就是用我的PHP返回的数组填充$ scope.favorites,然后使用ng-repeat循环。

1 个答案:

答案 0 :(得分:1)

您的JS存在问题。您的代码需要从getAllFavorites()同步返回数据,但该函数不会返回任何内容。使用$ http拨打电话,它会给你一个承诺。您可以使用该承诺在客户端获取数据时进行响应。

app.controller("MainController", function($scope, $http){
    var getAllFavorites = function() {
        return $http.get("/home/getAllFavoriteIds"); // This should really be done in a service
    };

    getAllFavorites().then(function(response){
        $scope.favorites = response.data;
    });
});