如何从Angular Factory向datepicker添加值?

问题描述 投票:0回答:1

我有一个Angular Factory从我的spring应用程序的后端获取一个日期,我想将它添加到Input中,因此日历输入始终设置为从后端获得的日期,用户无法更改它。我怎么能实现这个目标?我应该把它放在我的控制器上还是直接放在按钮上?这是我的代码:

工厂(与其他.factory连接):

.factory('DataInizioGeneraCalendario', function ($resource) {
return $resource('rest/anagrafica/dataInizioGeneraCalendario', {
    get: {
        method: 'GET'
    }
});

控制器功能:

 $scope.generaCalendario = function () {
    $scope.modificaCalendarioDiv = true;
    $scope.successMessage = false;
    $("#idModificaCalendarioDiv").hide();
    $scope.element = new Calendario();
    autoScroll('generaCalendario');
    $("#idErrorTemplate").hide();
    $('#data').attr('disabled', false);
    $("#idGeneraCalendarioDiv").show();
};

输入:

<div class="col-xs-12 col-md-2" >
                    <label for="dataInizio" class="row col-xs-12 control-label" style="text-align: left">da Data</label>
                    <input class="datepicker form-control" placeholder="gg/mm/aaaa" required type="text" id="data" ng-disabled="true" />
                </div>

编辑:忘记添加,控制器功能由显示日历输入的按钮调用。

html angularjs input controller factory
1个回答
1
投票

因为工厂的GET请求将异步返回日期值,所以最好在控制器中有一个$scope.date,它将保存从服务器返回的日期值。此外,根据您在后端存储日期的格式,您可能需要将从后端返回的值转换为字符串格式,因此<input type="date">将根据Angular docs正确使用它。

在您的代码中,您需要将input元素绑定到此值,如下所示:<input ng-model="date">。它将要做的是将此输入绑定到数据模型,以便每次用户编辑输入时,$scope.date也会更新。

如果您不希望用户能够编辑此日期,则需要:

  1. 保持输入字段禁用<input disabled>(此处不需要使用ng-disabled,因为您希望始终禁用它)。并删除此行:$('#data').attr('disabled', false);在您的函数中。
  2. 你是单向绑定,而不是two0way绑定,如下所示:<input disabled ng-value="date">

这是工作的DEMO,它显示了两个输入:一个是可编辑的,另一个是不可编辑的。

© www.soinside.com 2019 - 2024. All rights reserved.