2017-07-10 2 views
0

私は角度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; 
      }); 

     }) 



    } 
+0

あなたはng-minlengthまたはng-maxlengthを試してもよいでしょう。 –

+0

ページが読み込まれるときにfillsiebelloandetails(SiebelLoanDetails)が呼び出されていますか? – Vivz

+0

はい。私は呼び出しているページをロードします(SiebelLoanDetails)。 –

答えて

1

このために、次のように試すことができます。

  1. 関数の外に変数を宣言します。
  2. 次に、関数内から値を割り当てます。

例:

...... 

    var vm=this; 
    vm.range=[]; //declare variable outside the function 
    function fillsiebelloandetails(SiebelLoanDetails) 
    { 
     //some http ajax call and get values and assign it ti range. 
     vm.range = '1,7'; 
    } 

私はあなたにとって役に立つかもしれないと思います。

+0

これは私のために働いています。ありがとうございました。 –

+0

たとえば、var a = 10、var b = 20の場合、$ scope.range =はどのように書くことができますか? –

+0

aとbは何ですか?私はコードで1と7の代わりに – aseferov

0

にrangeNumberの変化を見る必要がある

関連する問題