如何从 Angular 工厂向日期选择器添加值?

How do you add a value to datepicker from an Angular Factory?

我有一个 Angular 工厂,它从我的 spring 应用程序的后端获取单个日期,我想将它添加到输入中,以便日历输入始终设置日期从后端获取,用户无法更改它。我怎么能做到这一点?我应该把它放在我的控制器上还是直接放在按钮上?这是我的代码:

Factory(与其他 .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>

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

因为你的工厂的 GET 请求将 return 异步日期值,所以最好在你的控制器中有一个 $scope.date 来保存从 return 编辑的日期值服务器。此外,根据您在后端存储日期的格式,您可能需要将后端 returned 的值转换为 string 格式,因此它<input type="date"> 会根据 Angular docs.

正确使用

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

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

  1. 保持输入字段禁用<input disabled>(这里不需要使用ng-disabled,因为你想让它一直处于禁用状态)。并删除此行: $('#data').attr('disabled', false); 在你的函数中。

  2. 你是单向绑定,而不是双向绑定,像这样:<input disabled ng-value="date">

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