2017-05-03 20 views
1

を返す:角度NGモデル - 空の入力は、私はこの入力を有するヌル

<input ng-model="data.value" type="number" placeholder="0" value="0"> 

Iは、(1例)の入力を変更した後、data.value がヌル保持し、それを削除します。私は入力を削除するときにそれが欲しいdata.valueは、デフォルト値として0を保持します。

私は、このソリューションを見た:これは解決策が私のために動作しますが、私がそこにあれば$watchまたはng-change機能せず、他の解決策を知りたい Angular ng-model: empty strings should be null

を。

ありがとうございます!

+1

私はクリーンを作成することだと思う(オープンコンソールは、文字列が空にされ、渡された値が5あるので、それはデフォルト値5を設定し、どのように気づくために) ng-modelを必要とするカスタム属性ディレクティブを作成し、リンクしたソリューションに記載されている値を0に変換するカスタムパーサを適用します。 – Strille

+0

しかし、その場合は0に設定されます。他の入力がある場合は、入力ごとに他のデフォルト値が必要ですが、多くの指示が必要です。@Strille – Sagie

+0

多くのディレクティブが必要だと言った人は、ただ一つのディレクティブを作成し、それをあなたが望むすべてのテキストボックスに呼び出すだけです。 –

答えて

1

よりも最善の方法の一つであります私は他のデフォルト値を必要とする多くのディレクティブが必要です

HTMLのディレクティブを使用している間に提供されるディレクティブには、defaultValue attrがある可能性があります。

.directive('emptyToDefault', function() { 
    return { 
     restrict: 'A', 
     require: 'ngModel', 
     scope: { 
      defaultValue: '=' 
     }, 
     link: function (scope, elem, attrs, ctrl) { 
      ctrl.$parsers.push(function(viewValue) { 
       if(viewValue === null) { 
        return scope.defaultValue || 0; 
       } 
       return viewValue; 
      }); 
     } 
    }; 
}); 

外部から異なるデフォルト値を簡単に渡すことができ、文字列が空になったら設定されます。

HTMLは次のようになり、

<input ng-model="data.value" type="number" placeholder="0" value="0" 
     empty-to-default default-value="5"> 

working plunker

2

これは解決策が私のために動作しますが、私がそこにあれば$見る

linkはあなたが見つけたもの、また$watch


を使用して解決策を持っていなくて、他の解決策を知りたいです

使いたい場合ng-change

Jus試してみる

0123私はいくつかの他の入力があり、各入力のためになるならば
<input ng-model="data.value" type="number" ng-change="defaultValue()" 
placeholder="0" value="0"> 

//コントローラ

$scope.defaultValue=function() 
{ 
    if($scope.data.value==null || $scope.data.value==='') 
    { 
    $scope.data.value=0; 
    } 
} 
  • しかしDirectiveは、他のオプション
+0

ありがとう、私はその指示が非常に良い解決策であることを発見しました。 – Sagie

関連する問題