2016-06-24 34 views
1

Ich lerne eckig und habe versucht, dynamische Bindung auf meiner Testseite zu implementieren. Mein Ziel war es, Eingabefelder zu implementieren, von denen jeder mit einem dynamischen Variablennamen verknüpft ist.Winkelbindung an vererbte Bereichsvariablen

Wenn ich Ergebnis Array nicht in Root-Bereich deklarieren will - es wird Ergebnis-Array für jede Wiederholung erstellen und unter jeder Box sehe ich seine eigenen Ergebnisse Inhalt.

Aber wenn ich Decalre Ergebnisse im root-Bereich, und da ich es nicht redeclare - keine Spiegelung muss gelten, und ich sollte jedes Feld zu Variable im Root-Bereich Array binden. Stattdessen sehe ich unter jedem Feld nur den Array-Inhalt des Root-Bereichs und ändert sich nicht, während ich die Eingaben ändere. Jede Hilfe wird geschätzt.

Hier ist mein Beispiel:

HTML:

<!DOCTYPE html> 
<html> 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script src="index.js"></script> 
<body ng-app="app" ng-controller="main" > <!--ng-init="results = [{'TEST': 1}]" --> 

<div> 
    <p>Name: <input type="text" ng-model="name"></p> 
    <p ng-bind="name"></p> 
    <input type="button" value="Clickme" ng-click="clickfnc()"> 
    <input type="button" value="Dump" ng-click="dump()"> 
    <input type="button" value="Pop" ng-click="remove()"> 
</div> 

<div ng-repeat="x in params"> 
    <p>Name: <input type="text" ng-model="results[x.name]"></p> 
    <p ng-bind="results[x.name]"></p> 
    <p>{{x.name}}</p> 
    <p>{{results}}</p> 
    <p>{{params}}</p> 
</div> 

<hr> 

<p ng-bind="results"></p> 

<hr> 

</body> 
</html> 

index.js:

var app = angular.module('app', []); 
app.controller('main', function ($scope) 
{ 
    $scope.clickfnc = function() 
    { 
     console.log('click'); 

     $scope.params = [ 
      { 
       name: 'ACCOUNT' 
      }, 
      { 
       name: 'AMOUNT' 
      } 
     ]; 
    }; 

    $scope.dump = function() 
    { 
     console.log($scope.results) 
    }; 

    $scope.remove = function() 
    { 
     $scope.params.pop(); 
    } 
}); 

Antwort

1

Wenn ich das richtig verstanden, was Ihr Ziel ist es, Sie ist der Grund gescheitert, dass Ihr results erstellt Array, aber Sie sollten ein Objekt erstellen.
Hier: <p>Name: <input type="text" ng-model="results[x.name]"></p>
Sie neue Eigenschaften zu den Ergebnissen zuweisen, so sollte es Objekt sein. Sie können diese Geige überprüfen - https://jsfiddle.net/kb5udcac/

+0

Vielen Dank! Mein Fehler, wird besser aussehen, bevor Sie das nächste Mal fragen. – user3177112

Verwandte Themen