2013-03-09 14 views
12

Mam numer input type ustawionyangularjs ng-Model typ wejścia do rootScope nie aktualizowanie

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

Gdzie inputModel jest $rootScope.inputModel. Za każdym razem, gdy zmieniam pole wprowadzania danych, wartość nie jest wyświetlana na $rootScope. Czy nie można powiązać pola wejściowego z $rootScope? czego tu brakuje?
Zasadniczo mam innego kontrolera, który wykonuje obliczenia na danym $rootScope i te obliczenia zmieniają się w zależności od wartości pola wprowadzania.
pomoc jest bardzo ceniona

Dzięki

+2

Twój problem dotyczy dziedziczenia prototypów. To pytanie często pojawia się w Stack Overflow. Sprawdź [to] (https://github.com/angular/angular.js/wiki/The-Nuances-of-Scope-Prototypal- Inheritance), aby dowiedzieć się, co jest nie tak. –

+2

@JoshDavidMiller powiedział wszystko. Sprawdź także to [skrzypce] (http://jsfiddle.net/bmleite/UXsLj/). To może pomóc ... – bmleite

+1

najlepiej nie przechowywać niczego na $ rootScope. Do komunikacji między kontrolerami powinna być używana usługa. Sprawdź [to wideo] (http://www.youtube.com/watch?v=HXpHV5gWgyk) – Dogoku

Odpowiedz

18

Jak inni wskazał, że jest to prototypowy Problem dziedziczenia. Twój model wejściowy jest generowany w bieżącym zakresie, a nie w rootScope.

Zawsze używaj "." w twoich poglądach. To będzie działać:

rootScope.fields = { 
    inputModel: '' 
} 

i

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

Zobacz this question - można użyć właściwości $root na zakres i wiązanie byłoby

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

będzie to wiązać bezpośrednio na korzeniu zakres bez potrzeby wyraźnego przypisania go do kontrolera.

+0

Dzięki. Zaoszczędziłam mnóstwo czasu. –

Powiązane problemy