2016-03-30 3 views
0

Ich möchte jedes Objekt in ein Array schieben, wenn es angeklickt wird. Ich kann eine Referenz für jedes einzelne Objekt erhalten, aber ich kann das Objekt nicht in ein Array schieben. Es sagt mir, Push ist keine Funktion. Ich habe so viel Zeit damit verbracht, das herauszufinden. Kann mir jemand in die richtige Richtung zeigen?Gibt es eine Möglichkeit für mich, mein referenziertes Objekt in ein Array zu schieben?

angular.module('app', []); 
 

 
angular.module('app').controller("MainController", function() { 
 
    var vm = this; 
 
    vm.ordered = {}; 
 

 
    vm.menu = [{ 
 
    title: 'Pizza', 
 
    type: 'entree', 
 
    favorite: true, 
 
    price: 10 
 
    }, { 
 
    title: 'Tacos', 
 
    type: 'entree', 
 
    favorite: false, 
 
    price: 5 
 
    }, { 
 
    title: 'Onion Rings', 
 
    type: 'app', 
 
    favorite: false, 
 
    price: 2 
 
    }, { 
 
    title: 'Ice Cream', 
 
    type: 'dessert', 
 
    favorite: false, 
 
    price: 11 
 
    }, { 
 
    title: 'Mac n Cheese', 
 
    type: 'app', 
 
    favorite: false, 
 
    price: 7 
 
    }, { 
 
    title: 'Salad', 
 
    type: 'salad', 
 
    favorite: true, 
 
    price: 4 
 
    }]; 
 

 
}).directive('section', function() { 
 
    return { 
 
    restrict: 'E', 
 
    link: function(scope, element) { 
 
     scope.ordered = {}; 
 
     element.bind('click', function(event) { 
 
     console.log(scope.item); 
 
     scope.ordered.push(scope.item); 
 
     }); 
 

 
    } 
 
    }; 
 
});;
.left { 
 

 
    float: left; 
 

 
    width: 50%; 
 

 
} 
 

 
.right { 
 

 
    float: left; 
 

 
    width: 50%; 
 

 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<body ng-app="app" ng-controller="MainController as main"> 
 

 
    <div class="left"> 
 
    <h2>Lists One</h2> 
 
    <section id="{{item.id}}" ng-repeat="item in main.menu | filter:main.searchInput | orderBy:main.order.key:main.order.reverse"> 
 

 
     <strong>{{item.title}} </strong> 
 
     <span>$ {{item.price}}</span> 
 

 
    </section> 
 
    </div> 
 

 
    <div class="right"> 
 
    <h2>Lists Two</h2> 
 
    <section id="{{item.id}}" ng-repeat="item in main.ordered | filter:main.searchInput | orderBy:main.order.key:main.order.reverse"> 
 

 
     <strong>{{item.title}} </strong> 
 
     <span>$ {{item.price}}</span> 
 

 
    </section> 
 
    </div>

+1

'$ scope.ordered = {}' 'sollte sein $ scope.ordered = []' – Jaydo

+1

Warum für die eine Richtlinie verwenden? Es ist überhaupt nicht wiederverwendbar, und alles, was Sie brauchen würden, ist ng-klicken Sie auf den Abschnitt. –

+0

Vielen Dank, aber die $ scope.ordered wird immer noch nicht in der Ansicht – Rafael

Antwort

2

ändern scope.ordered = {};-scope.ordered = [];

+0

Warum scope.ordered nicht auf dem DOM angezeigt wird – Rafael

Verwandte Themen