2016-04-13 13 views
0

<input> etiketine girilen değere göre bir düğmeyi etkinleştirmeye veya devre dışı bırakmaya çalışıyorum. Alan boş bırakılabilir veya int> 0 girilmelidir, bu yüzden limitMatchesundefined olmadığı sürece bunu iddia etmek istiyorum.<input ng-model> ile ayarlanmış assert var tanımlanmamış

Ben benim input etiketi yapılandırılmış ettik: Açısal denetleyici olarak

<input type="number" min="1" step="1" class="form-control" ng-model="query.limitMatches"/> 

: Ancak

$scope.query = {limitMatches: null}; 
$scope.searchAllowed = function() { 
    typeof $scope.query.limitMatches !== "undefined"; 
}; 

, benim searchAllowed fonksiyon daima rağmen konsolu içinde gerçek döndürüyor (console.log($scope.query.limitMatches); kullanarak) limitMatches'un görünüşte undefined olarak ayarlandığını görebiliyorum.

+0

@devqon Tırnaklar gerekli. – dfsq

+0

@devqon 'typeof' türünü içeren bir dize döndürür. Çifte eşitlik kullanması nedeniyle, türler değerlerin yanı sıra karşılaştırılır, bu nedenle tırnak işaretleri kesinlikle gereklidir –

cevap

0

ben çözüm buldum!

... Ben parantez içinde typeof $scope.query.limitMatches !== "undefined"; sarmak gerekli çıkıyor

$scope.searchAllowed = function() { 
    (typeof $scope.query.limitMatches !== "undefined"); 
}; 

Ne golcü!

0

Sorun, undefined'un null'a kesinlikle eşit olmamasıdır, bu nedenle işleviniz "undefined" modeli için gerçek olayı döndürür.

herhangi falsy değeri için aynı tepki fonksiyonu basitleştirmek olacaktır:

$scope.searchAllowed = function() { 
    return Boolean($scope.query.limitMatches); 
}; 
+0

Cevap için teşekkürler, girilen değerin minimumun üstünde olmasını sağlar. Ancak, bu özel durumda ben de kabul edilebilir bir değer olmak için boş istedim, yine de eminim bol yararlı bulacaktır :) – Matthew

İlgili konular