2016-08-08 9 views
0

に渡されたばかりではない私は、私は価値がある私のディレクティブcontroller機能NG-モデルがあり、エラークラス

$scope.confirm= function(value, min, max) { 
    if (!value) return false; 
    return ("" + value).length < min || ("" + value).length > max; 
}; 

で、このようなメソッドを持っている私のdirective

<input ng-model="acc" type="number" required /> 
<p class="input-details" ng-class="{'has-error': confirm(acc, 3, 17)}"></p> 

内部以下templateを持っています私のconfirmメソッドでは常にundefinedとして渡されましたが、以下のように私の入力のng-changeで同じメソッドを呼び出すと、そのメソッドは渡されます。

<input ng-model="acc" type="number" ng-change="confirm(acc,3,17)" required /> 

はなぜng-classは正しいng-model値を取得されていませんか?

答えて

1

(""+3).length = 1 || (""+17).length = 2アップ番号入力クランクと.LENGTHに等しいもの(「」+ ACC)を参照し、修正方法、例えばcodepen参照https://codepen.io/anon/pen/vKQZoR

app.controller('classTesterCtrl', function($scope, $log){ 
    $scope.confirm= function(value, min, max) { 
    if($scope.acc < 3 || $scope.acc > 17){ 
     $scope.valid = false; 
    } else { 
     $scope.valid = true; 
    } 
    }; 
}); 


<div ng-app="modelTest"> 
    <div ng-controller="classTesterCtrl"> 
    <input ng-model="acc" type="number" ng-change="confirm()" required /> 
    <p class="input-details" ng-class="{'has-error': valid}"></p> 
    {{(""+acc).length}} 
    {{acc}} 
    {{valid}} 
    </div> 
    </div> 
1

JavaScriptでご利用の場合は、 ng-modelの代わりにdata-ng-modelも使用してください。

1

$scopeを変数に使用する代わりに、acc変数を参照してください。なぜなら型変換の

$scope.confirm = function(min, max) { 
    if (!$scope.acc) return false; 
    return ("" + $scope.acc).length < min || ("" + $scope.acc).length > max; 
}; 
関連する問題