2017-09-11 11 views
0

挨拶。私の場合、ngModelの値(以下のval)がnullでないときは、通常フォーマッタを使用できます。 valの値を含むながら(< input>タグがフォーマットされます。)AngularJS - ディレクティブフォーマッタがNULL値のために機能しません

ngModelCtrl.$formatters.push(function (val) { 
    if (val) { 
     console.log('log positive'); 
     return 'Record found'; 
    } else { 
     console.log('log negative'); 
     return 'No record'; 
    } 
}); 

<入力を意味する>タグのみがフォーマットされます。しかし、私は、 'log negative'が表示されても、< input>タグもフォーマットされていないことがわかりました。

これを修正する方法があるかどうかは分かりますか?前もって感謝します。ここで

UPDATE 1

私の使用法の完全なコードは

HTML

<div ng-app="myApp" ng-controller="memberDetailCtrl" ng-init="ent.lastDepositDate=null;"> 
    <tit-date title="depositDate" ng-model="ent.lastDepositDate"></tit-date></tit-txt> 
</div> 

Javascriptを

angular.module("myApp", []) 

.controller("memberDetailCtrl", function ($scope) { 

}) 

.directive('titDate', function() { 
    return { 
     restrict: 'E', 
     scope: { 
      title: '@', 
      fieldName: '@', 
      ngModel: '=' 
     }, 
     template: '<div><span>{{title}}: </span><input ng-model="ngModel" datepicker readonly /></div>' 
    }; 
}) 
.directive('datepicker', function() { 
    return { 
     restrict: 'A', 
     require: 'ngModel', 
     link: function (scope, element, attrs, ngModelCtrl) { 
      ngModelCtrl.$formatters.push(function (val) { 
       if (val) { 
        console.log('log positive'); 
        return 'Record found'; 
       } else { 
        console.log('log negative'); 
        return 'No record'; 
       } 
      }); 
     } 
    } 
}); 
+0

お電話でご指示ください。 –

+0

@ MaximShoustin私はUPDATE 1のコードを更新しました。ng-initで見たように、私はent.lastDepositDate = nullを設定し、フォーマッタはフォーマットに失敗しました。 – mannok

+0

@ mannok、問題は 'datepicker'で起こりそうです。これが別の指令であれば、 'ng-model'の' null'値をどのように解釈するのかを理解する必要があります。あるいは、 'datepicker'の変更を避けるために' val'が 'null'のときはいつでも' $ formatters'定義を変更して現在の日付を返します(つまり、 'return new Date(Date.now())')。 – miqid

答えて

0

あるおかげブラザーズは、最終的に私はこれがあることがわかりましたAngularJS 1.3.0の不具合一度私はそれを現在のバージョンにアップグレードしました。

関連する問題