簡體   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