2015-06-01 13 views
5

Jestem nowy w Angular i próbuję zrobić coś naprawdę podstawowego. Oto część z widokiem (wszystkie pliki kątowe są dodawane w innym miejscu):

<div ng-controller='ctrl'> 
    <input type='text' ng-model='id'> 
</div> 

I tu jest mój kontroler:

module.controller('ctrl',['$scope', function ($scope) { 

    // get the scope value here 
}]); 

Co usiłuję zrobić jest bardzo proste. Chciałbym użyć wartości wejściowej. Próbowałem coś takiego jak $scope.data = [] i $scope.data.push($scope.id), aby utworzyć tablicę z wartością zakresu, ale to nie zadziałało. Kiedy próbowałem wyświetlić wartość, dostałem "niezdefiniowany" na konsoli.

Czy macie jakiś pomysł?

Edytuj: Widok ma również przycisk z dyrektywą ng-click, który uruchamia funkcję kontrolera, w której próbuję uzyskać moją wartość.

+3

Czy wpisać cokolwiek w 'input'? – tymeJV

+0

Napisałem coś i (nie napisałem tego na oryginalnym wpisie) Mam przycisk z dyrektywą 'ng-click' połączoną z funkcją w kontrolerze. – Arhyaa

+0

Edytuj tytuł pytania tak, aby określał on problem, przed którym stoisz: "Po prostu próbuję zrobić kilka podstawowych rzeczy za pomocą ngModel AngularJS" nic mi nie mówi. Nie prosiłbyś swojego rodzica "Próbuję zrobić sobie coś z pieca" ... "OK, o co pytasz? Co gotujesz? W czym problem?". – Jonast92

Odpowiedz

10

Wartość zostanie automatycznie dodana do $scope, ale musisz wpisać coś do elementu input.

Powiedziawszy, musisz wywołać coś, aby uzyskać tę wartość. Na przykład, gdy masz swój komentarz // get the scope value here - jest on wywoływany, gdy tylko kontroler jest inicjowany i nigdy nie jest wywoływany ponownie; więc w tym czasie będzie się rejestrować niezdefiniowana. Jednakże, jeśli ustawisz go do kliknięcia przycisku lub coś, widać, jest ona dostępna:

<div ng-controller='ctrl'> 
    <input type='text' ng-model='id'> 
    <button ng-click="logId()">Log ID</button> 
</div> 

i kontroler:

module.controller('ctrl',['$scope', function ($scope) { 
    $scope.logId = function() { 
     console.log($scope.id); 
    } 
}]); 

Teraz wpisz coś do wejścia i kliknij przycisk.

+0

Hmm, moje złe, zapomniałem o tym wspomnieć.Mam przycisk na widoku, z dyrektywą "ng-click" połączoną z funkcją w kontrolerze, aby ją uruchomić. Dodam go do oryginalnego posta! – Arhyaa

+0

Czy możesz podać [jsBin] (http://jsbin.com) lub [jsFiddle] (http://jsfiddle.net), które nie działa? Podany przeze mnie kod działa dobrze: http://jsbin.com/wuhiciwibi/1/edit?html,js,console,output @Arhyaa – Tom

+0

Przełączam z "angular.min.js" na "angular.js" w głównej widok, i zadziałało. – Arhyaa

0

Jeśli naprawdę potrzebujesz go w tablicy, po prostu zrób to w kontrolerze:

$scope.data = [0];

i HTML zrobić <input type="text" ng-model="data[0]">

To wypełni tę wartość tablicową automatycznie podczas pisania coś INPUT, id będzie zawsze na pierwszej pozycji w tablicy.

Albo można obsługiwać go z obiektu W sterowniku: $scope.data = {};

w HTML <input type="text" ng-model="data.id">

Powiązane problemy