繁体   English   中英

如何将返回值绑定到角度模型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM