AngularJS:尝试从变量中获取数据

时间:2018-03-04 19:22:46

标签: javascript angularjs

AngularJS中的cartController:

angular.module('demo', [])
.controller('Hello', function($scope, $http) {
    $scope.refreshCart = function() {
    $http.get('http://localhost:8080/rest/cart')
        .success(function(response) {
            $scope.items = response.data;
        });
};
    $scope.removeFromCart = function(productId) {
        $http.delete('/delete/' + productId)
            .success(function (data) {
                $scope.refreshCart();
            });
    };
    $scope.addToCart = function(productId) {
        $http.put('/add/'+ productId)
            .then(function(response) {
                $scope.refreshCart();
        });
    };
});

第一个HTML文件(这里一切正常):

<a href = "#" type="button" class="btn btn-info" th:attr="
                       ng-click='addToCart(' + ${product.id} + ')'" data-toggle="modal" data-target="#myModal">
                            Add to cart</a>

第二个HTML文件:

    <html lang="en" xmlns:th="http://www.thymeleaf.org" ng-app="demo">
<script src="http://localhost:8080/cartController.js"></script>
<body ng-controller="Hello">
    (...)
 <tbody ng-repeat="item in items.cartItemList">
            <div class="row">
                    <h4 class="nomargin">{{item.product.name}}</h4>
                    <p>{{item.product.description}}</p>
            </div>
        <td data-th="Price">{{item.price}} PLN</td>
        <td data-th="Quantity">{{item.quantity}}</td>
        </tbody>
(...)

所以我需要做的是:

1)点击第一个HTML文件中的按钮,然后将JSON加载到$ scope.items(它可以工作)。

2)显示第二个HTML文件,从$ scope.items加载JSON,并向用户查看此JSON。

但是当我得到第二个HTML文件并尝试显示数据时,$ scope.items为空。你能帮忙吗?

2 个答案:

答案 0 :(得分:1)

您是否在浏览器中出现控制台错误?也许你必须在控制器上将items定义为空数组,如下例所示......

.controller('Hello', function($scope, $http) {
    //define empty array
    $scope.items = [];

    $scope.refreshCart = function() {
        $http.get('http://localhost:8080/rest/cart')
        .success(function(response) {
            $scope.items = response.data;
        });
    };
    //...
}

答案 1 :(得分:0)

我建议你使用广播和发射。使用这些在控制器之间传递数据。如果要将数据从父控制器传递到子控制器,则应使用$ broadcast。如果反过来就会发出。