2016-08-15 2 views
0

in meiner App Ich versuche, ich baue einen Einkaufswagen. Sie können die App in diesem Codepen sehen: http://codepen.io/summerfreeze/pen/VjqJYW. Es funktioniert fast, aber ich kämpfe mit dem letzten Teil. Ich möchte die Schaltfläche "ADD ORDER LINE" hinzufügen, um weitere Bestellzeilen unter der bestehenden hinzuzufügen. Ich versuche, dies mit jQuery zu tun:jQuery Klon und Append-Funktion funktioniert nicht wie erwartet in AngularJS Direktive

myApp.directive('myDirective', function($scope) { 
    $scope.addline = function() { 
     $(".orderline").clone().appendTo('.main'); 
    }; 
    return addline(); 
    }); 

Aber das scheint nicht zu funktionieren. Ich wäre dankbar, wenn sich jemand den Code ansehen und mir sagen würde, was ich falsch gemacht habe.

+2

Dies enthält mehrere Syntaxfehler. Ist es Ihr vollständiger Code? – 1252748

+3

Mischen Sie jQuery nicht mit AngularJS. Ich schlage vor, dass Sie sich https://docs.angularjs.org/api/ng/directive/ngRepeat ansehen. – Wawy

+0

Ich stimme mit @Wawy für Anfänger überein. Zweitens, überprüfen Sie, was Sie zurückgeben. 'addline' ist undefined ... – SteamDev

Antwort

1

nicht sicher, warum Sie eine Direktive wurden. Ich habe das aus deinem Code entfernt und es funktioniert. Sie haben noch andere Fehler, aber ich schätze, Sie können sich um diese kümmern. Hier ist der Link auf die modifizierte Version

new codepen version

$scope.addline = function(){ 
    $(".orderline").clone().appendTo('.main'); 
    }; 

Wie die anderen vorgeschlagen, um sauberen Code-Standards zu folgen, bitten wir Sie, mit jQuery-Code in AngularJS, in der Zeit zu Problemen es führen wird.

+0

Ich werde sicherlich bald mit Angular lernen, danke. Dein Code funktioniert, aber klicke ein paar Mal und sieh dir an, wie viele divs hinzugefügt werden. Es multipliziert sich. Wie vermeide ich das? – summerfreeze

+1

Verwenden Sie die Funktion ".first()" von jquery '$ (". Bestellungszeile "). First(). Clone(). AppendTo ('. Main');' –

+0

die geklonten Eingabe-Lemente funktionieren nicht als Original (keine Autocomplete usw.) – summerfreeze

0

Von dem, was ich sagen kann, sollten Sie nicht zu #main anhängt, sondern zu #main div[0]

Verwandte Themen