2013-03-09 5 views
12

Aktualisierung Ich habe eine Eingabetypnummer aufAngularJS ng Modell-input type Nummer rootScope nicht

<input type="number" ng-model="inputModel"/> 

Wo inputModel$rootScope.inputModel ist. Jedes Mal, wenn ich das Eingabefeld ändere, bleibt der Wert nicht auf dem $rootScope. Ist es nicht möglich, ein Eingabefeld an eine $rootScope zu binden? Was fehlt mir hier?
Ich habe im Grunde eine andere Steuerung, die Berechnungen auf gegebenen $rootScope durchführt und diese Berechnungen ändern, je nachdem, was der Wert des Eingabefeldes ist.
Eine Hilfe sehr geschätzt wird

Dank

+2

Ihr Problem ist mit der prototypischen Vererbung. Diese Frage taucht bei Stack Overflow auf. Schauen Sie sich [this] (https://github.com/angular/angular.js/wiki/The-Nuances-of-Scope-Prototypical-Inheritance) an, um zu erklären, was hier falsch ist. –

+2

@JoshDavidMiller sagte alles. Prüfe auch diese [fiddle] (http://jsfiddle.net/bmleite/UXsLj/). Es kann helfen ... – bmleite

+1

Idealerweise sollten Sie nichts auf dem $ rootScope speichern. Ein Dienst sollte für die Kommunikation zwischen den Controllern verwendet werden. Überprüfen Sie [dieses Video] (http://www.youtube.com/watch?v=HXpHV5gWgyk) – Dogoku

Antwort

18

Wie andere erwähnt, ist es eine prototypische Vererbung Problem. Ihr Eingabemodell wird im aktuellen Bereich generiert, nicht im rootScope.

Verwenden Sie immer "." in deinen Ansichten. Dies funktioniert:

rootScope.fields = { 
    inputModel: '' 
} 

und

<input type="number" ng-model="fields.inputModel"/> 
23

this question See - Sie $root Eigenschaft auf den Umfang nutzen können und die Bindung wäre

<input type="number" ng-model="$root.inputModel"/> 

Dies bindet direkt an der Wurzel Scope, ohne dass es explizit im Controller zugewiesen werden muss.

+0

Danke. Es hat mir viel Zeit gespart. –

Verwandte Themen