<!DOCTYPE html>
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
    </head>
    <body>
        <div ng-app="myApp" ng-controller="customersCtrl"> 
            <button ng-click="call('d')">for d</button>
            <button ng-click="call('f')">for f</button>
            <ul>
                <li ng-repeat="x in a.{{replace}}">
                    {{x}}
                </li>
            </ul>
        </div>
        <script>
            var app = angular.module('myApp', []);
            app.controller('customersCtrl', function($scope) {
                $scope.a = {
                    d:[1,2,3,4,5],
                    f:[6,7,8,9]
                };
                $scope.call = function(val) {
                    $scope.replace='val';
                }
            });
        </script>
    </body>
</html>

Estoy tratando de agregar dinámicamente los valores al contenido de ng-repeat, pero no está funcionando, por favor ayúdenos, podemos agregar valores dinámicamente a ng-repeat para que podamos cambiar los valores iterativos cada vez simplemente cambiando un valor como el anterior, si no, hay alguna idea mejor

2
Abhishek 22 dic. 2016 a las 15:08

2 respuestas

La mejor respuesta

En lugar de pasar cadenas, puede pasar los valores en la función de llamada y luego asignar esos valores a $ scope.replace que luego actualiza su ng-repeat

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js">       </script>
    <body>

        <div ng-app="myApp" ng-controller="customersCtrl"> 
            <button ng-click="call(a.d)">for d</button>
            <button ng-click="call(a.f)">for f</button>
            <ul>
                <li ng-repeat="x in replace">
                    {{x}}
                </li>
            </ul>
        </div>

        <script>
            var app = angular.module('myApp', []);
            app.controller('customersCtrl', function($scope) {
                $scope.a = {
                   d: [1,2,3,4,5],
                   f: [6,7,8,9]
                }
                $scope.call = function(val){
                    $scope.replace=val;}
                }
            );
        </script>

    </body>
</html>
1
T.Gounelle 22 dic. 2016 a las 12:20

El siguiente fragmento puede ayudarte.

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js">
</script>

<body>

    <div ng-app="myApp" ng-controller="customersCtrl">
        <button ng-click="call('d')">for d</button>
        <button ng-click="call('f')">for f</button>
        <ul>
            <li ng-repeat="x in a[replace]">
                {{x}}
            </li>
        </ul>

    </div>

    <script>
        var app = angular.module('myApp', []);
        app.controller('customersCtrl', function ($scope) {
            $scope.a = {
                d: [1, 2, 3, 4, 5],
                f: [6, 7, 8, 9]
            }
            $scope.call = function (val) {
                $scope.replace = val;
            }
        });
    </script>

</body>

</html>

Explicacion:

$scope.replace=val; //Assign the variable and not a string

<li ng-repeat="x in a[replace]"> // No need to use braces are you are in an ng tag already
3
Nitheesh 22 dic. 2016 a las 13:24