私は角度jでWebアプリケーションを開発しています。私はテキストボックスとディレクティブを持っています。私のテキストボックスは特定の範囲内の値だけを取る必要があります。それ以外の場合、エラーメッセージが表示されます。 HTMLコード以下。スコープに値を代入して関数内で機能しないAngularjs
<input class="" type="text" name="rangeNumber" ng-attr-placeholder="{{ 'DownPayment' }}" ng-model="DownPayment" range-number="range">
<ul class="error-msgs">
<li ng-show="!form5.rangeNumber.$invalid && form5.rangeNumber.$dirty">Number not in range</li>
</ul>
以下は私の指示です。
app.directive('rangeNumber', function() {
return {
require: 'ngModel',
link: function (scope, elem, attrs, ctrl) {
if (!ctrl) return;
var range = scope.$eval(attrs.rangeNumber);
range = range.split(',').map(Number);
ctrl.$parsers.push(function (value) {
value = +value;
var isValidRange = !(value >= range[0] && value <= range[1]);
ctrl.$setValidity('range', isValidRange);
return value;
});
}
};
});
以下は私が範囲を割り当てている私の機能です。
function fillsiebelloandetails(SiebelLoanDetails)
{
//some http ajax call and get values and assign it ti range.
$scope.range = '1,7';
}
ここでは、$ scope.range = '1,7'を割り当てても問題に直面しています。それは機能していません。私が$ scope.range = '1,7'と書くと;それは正常に機能します。なぜこれが起こっているのか分かりますか?どんな助けもありがとう。ありがとうございました。あなたが関数内で変数を定義するときに問題がoccurred.Youディレクティブレベルで変数を宣言する必要があります持っているように、その範囲は、機能(ローカル)スコープとして扱われるディレクティブ
link: function (scope, elem, attrs, ctrl) {
if (!ctrl) return;
scope.$watch(attrs.rangeNumber, function(){
var range = scope.$eval(attrs.rangeNumber);
range = range.split(',').map(Number);
ctrl.$parsers.push(function (value) {
value = +value;
var isValidRange = !(value >= range[0] && value <= range[1]);
ctrl.$setValidity('range', isValidRange);
return value;
});
})
}
あなたはng-minlengthまたはng-maxlengthを試してもよいでしょう。 –
ページが読み込まれるときにfillsiebelloandetails(SiebelLoanDetails)が呼び出されていますか? – Vivz
はい。私は呼び出しているページをロードします(SiebelLoanDetails)。 –