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?

-2
Uaychai Chotjaratwanich 19 Aug. 2015 im 06:38

4 Antworten

Beste Antwort

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.

0
quanfoo 19 Aug. 2015 im 04:42

Einige Punkte zu beachten

  1. $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.

  2. Wenn Sie $scope.allHobbys = $scope.otherHobby; // sagen, zeigt $ scope.allHobbys auf denselben Speicherort wie $ scope.otherHobby;

  3. Aber wenn Sie den Wert im Textfeld aktualisieren. Es wurde eine neue Zeichenfolge erstellt (da Zeichenfolgen im Universum unveränderlich sind)

  4. Zeigen Sie also $scope.OtherHobby jetzt auf einen anderen Ort

  5. Ihr $scope.allHobby zeigt jedoch auf denselben alten Speicherort

Schauen Sie sich an,

Demo

0
Dipak Ingole 19 Aug. 2015 im 05:07

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!

0
gafi 19 Aug. 2015 im 04:21

Versuchen Sie es mit $watch auf Ihrem var. Diese jsfiddle sollte Ihnen helfen.

=)

0
bobleujr 19 Aug. 2015 im 04:05