[英]How to bind return value to model in angular
我在角度应用程序中有多个日期时间输入。
我想在输入模糊时将该值设置为现在。 我已经使用ng-blur
并调用函数在多个位置完成了此操作。
问题是我有多个输入,除了在模型上更新哪个属性之外,拥有多个功能完全相同的事情似乎很愚蠢。 有什么更好的方法来解决这个问题。
另一个问题是,如果已有数据不更新。 同样,我有逻辑,但是只需要知道如何将模型传递给函数并为其设置返回值即可。
在控制器中创建一个函数,以将传递的对象设置为当前日期/时间:
$scope.setNow = function(dateObject) {
if (!dateObject) dateObject = new Date();
}
然后,在您的视图中,可以通过您要使用的任何事件(ng-blur,ng-click等)将显示的任何日期传递给模型。
<div ng-click="setNow(thisDate)">
{{thisDate | date : 'hh:mm:ss'}}
</div>
<div ng-click="setNow(thisOtherDate)">
{{thisOtherDate | date : 'hh:mm:ss'}}
</div>
<input type="text" ng-model="Task.StartDate" ng-blur="setNow(Task.StartDate)" >
<input type="text" ng-model="Task.EndDate" ng-blur="setNow(Task.EndDate)" >
听起来您可以使用指令。
<input ng-model="myDateField1" my-date-setter>
然后你的指令:
app.directive('myDateSetter', function () {
return {
restrict: 'A',
require: '^ngModel',
link: function (scope, elem, attrs, ctrl) {
elem.on('blur', function () {
if (!elem.val()) ctrl.$setViewValue(new Date());
});
}
}
});
然后,您可以在任何需要的地方应用该指令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.