2014-07-15 20 views
6

Ben angularjs bir uygulama geliştiriyorum. Girdi tipi = metin olarak ng-keypress olayı kullanıyorum. Metinde değer yazarken, tuşa basma fonksiyonunda yanlış değerler alıyorum. Örneğin, ben yazarsanız ilk kez "1" Ben undefined alıyorum. İkinci kez, başka herhangi bir değer yazarak ilk değeriniangularjs Ng-Tuşa basma olayı çalışıyor?

<input ng-model="NodeId_1" type="text" ng-keypress="getValue()"/>

var angularapp = angular.module('nameapp', []); 

    angularapp.controller('NameCtrl', function ($scope) { 
     $scope.getValue = function() { 
      alert($scope.NodeId_1);//Here first time undefined is coming and second what ever we enter first value will come 
     } 
    } 
) 
+0

Eğer mümkün yapıştırmak Can senin burada kod referans bazı –

+0

Açısal Kısayollar kullanmayı deneyin: http://chieffancypants.github.io/angular-hotkeys/ –

+0

Başka bir kütüphane kullanmanıza gerek yok, uygulamanızın neden çalışmadığı için cevabımı aşağıya bakın. Canlı demo ve hepsi. –

cevap

11

yerine ng-keyup kullanmak isteyeceksiniz verir.

ng-keypress tuşuna basıldığında olarak gerçekleşir, ve değer önce giriş doldurur. Bu yüzden ilk tuşa basmayacaksınız, ancak sonraki baskılarda siz yapacaksınız. o değer zaten girişi doldurulan sonra gerçekleştiği anda

kullanın ng-keyup ve senin sorunun çözüldü.

<input ng-model="NodeId_1" type="text" ng-keyup="getValue()" /> 

ng-keypress beklendiği gibi çalıştığını, ancak ihtiyaçlarınız için geçerli yönerge değildir.

Çalışma plunkr: http://plnkr.co/edit/OHWDZo68siDlcrXnLyzJ?p=preview

+0

ayrıca $ event'inizi getValue() öğesine iletmek ve geri dönüş (enter) tuşuna basılmasını (event.keyCode! = 13) kontrol etmek ve ardından uyarıyı göndermek isteyebilirsiniz. http://plnkr.co/edit/0PO3U4wp7EtYsPgBDklb?p=preview – Dinesh

+0

Geri dönüş anahtarı ve backspace tuşu bir form için ortak olanlardır, OP uygulaması için gerekli olan diğer anahtarları da ekleyebilir. Soruya cevap vermek artılar için olabilir, ancak yeni başlayanlar bu tür şeyler üzerinde kafa kafaya ihtiyaç duyarlar – Dinesh

+1

haha: D basit kelimeler ve adım adım açıklama, büyücülük bölümünün kaldırılmasına yardımcı olur: p ama basit kelimeleri kabul ediyorum ve adım adım adım bazen can sıkıcı olabilir. konuyu saptırmayalım :) – Dinesh

3

bir tuşa basıldığında ve bu anahtar normal (yerine kullanımı giriş) bir karakter değeri ürettiğinde tuşa basma olayı harekete geçirilir. https://developer.mozilla.org/en-US/docs/Web/Events/keypress

Yani giriş alanı değeri ne de kapsam değeri (döngü vb sindirmek/uygulamak) ne beklenen girdi değerini yansıtacaktır.

Çözüm ihtiyaçlarınız bağlıdır.

2) dinleyici yönteminde $ olay nesnesini kullanın ... değişim, keyup,:

1) inputfield başka olay kullanın: İşte bazıları

<input ng-model="NodeId_1" type="text" ng-keypress="getValue($event)"/> 

$scope.getValue = function (event) { 
    console.log(event) 
} 

3) oluştur senin kapsamında sizin NodeId_1 değeri için gözlemcisi:

$scope.$watch('NodeId_1', function(newVal) { 
    ... 
}); 
İlgili konular