angular-moment-picker
angular-moment-picker copied to clipboard
Ignoring model changes if model is set to string
Input:
<input class="form-control"
name="MomentPicker"
ng-model="vm.testDateTime"
ng-model-options="{ updateOn: 'blur' }"
moment-picker="vm.testDateTime">
If model is set to string - it is ignored. See Plunkr
I have no TS coding experience, so I made changes to JS directly. See Plunkr
The change I made is adding one more watcher after the watcher if ($attrs['ngModel'] != $attrs['momentPicker'])
:
$scope.$watch('model', function (newValue, oldValue) {
if (typeof newValue === "string") {
newValue = moment(newValue);
}
if (newValue !== oldValue)
utility_1.setValue(newValue, $scope, $ctrl, $attrs);
});
You can check the exact change at this comit
With the additional watch shown above, there is a problem with validation - the value is not validated and is show invalid required even if set. The solution is to modify momentToValue method instead of adding a watch:
exports.momentToValue = function (momentObject, format) {
if (typeof momentObject === "string") {
momentObject = moment(momentObject);
}
if (!exports.isValidMoment(momentObject))
return undefined;
return !format ? momentObject.valueOf() : momentObject.format(format);
};