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';
}
});
}
}
});
お電話でご指示ください。 –
@ MaximShoustin私はUPDATE 1のコードを更新しました。ng-initで見たように、私はent.lastDepositDate = nullを設定し、フォーマッタはフォーマットに失敗しました。 – mannok
@ mannok、問題は 'datepicker'で起こりそうです。これが別の指令であれば、 'ng-model'の' null'値をどのように解釈するのかを理解する必要があります。あるいは、 'datepicker'の変更を避けるために' val'が 'null'のときはいつでも' $ formatters'定義を変更して現在の日付を返します(つまり、 'return new Date(Date.now())')。 – miqid