HTML
<input type="text" ng-list ng-model="OtherHobby" />{{OtherHobby}} <br />
{{AllHobbys}}
Javascript
$scope.OtherHobby = [];
$scope.AllHobbys = $scope.OtherHobby;
Ich teste diesen Code. "OtherHobby" ist in Ordnung. Es zeigt, was ich erwarte, wenn Sie etwas in ein Textfeld eingeben. "AllHobbys" jedoch nicht. Es zeigt nichts. Warum ist das so?
4 Antworten
Das Problem kann aus Referenzen stammen. Sie können dies beheben, indem Sie "otherHobby" als Objekt initialisieren.
HTML:
<input type="text" ng-list ng-model="otherHobby.value" />{{otherHobby.value}} </br> {{allHobbys.value}}
Javascript:
$scope.otherHobby = {};
$scope.allHobbys = $scope.otherHobby;
Übrigens sollten Sie camelCase für Variablen verwenden.
Einige Punkte zu beachten
$scope.OtherHobby = [];
// Sie erstellen ein Array, das keine Array-Werte mehr enthält. Wie Sie ng-model = OtherHobby zugewiesen haben. Es enthält die Zeichenfolgenwerte, die Sie in das Textfeld eingeben.Wenn Sie
$scope.allHobbys = $scope.otherHobby;
// sagen, zeigt $ scope.allHobbys auf denselben Speicherort wie $ scope.otherHobby;Aber wenn Sie den Wert im Textfeld aktualisieren. Es wurde eine neue Zeichenfolge erstellt (da Zeichenfolgen im Universum unveränderlich sind)
Zeigen Sie also
$scope.OtherHobby
jetzt auf einen anderen OrtIhr
$scope.allHobby
zeigt jedoch auf denselben alten Speicherort
Schauen Sie sich an,
Demo
Sie könnten $watch
verwenden, aber versuchen Sie dies zu vermeiden, wenn Sie können, da Angular einen tiefen Klon des gesamten Arrays verwalten muss, um es zu beobachten.
Ich verstehe nicht, warum Sie 2 Verweise auf genau dasselbe Objekt benötigen. Wenn Sie das klarstellen können, kann ich vielleicht einen besseren Ansatz vorschlagen. Viel Glück!
Versuchen Sie es mit $watch
auf Ihrem var. Diese jsfiddle sollte Ihnen helfen.
=)