首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将当前日期时间传递给HTML页面中的angularjs函数?

如何将当前日期时间传递给HTML页面中的angularjs函数?
EN

Stack Overflow用户
提问于 2017-06-06 20:13:53
回答 1查看 870关注 0票数 1

我试图获取当前日期并将其传递给函数- same-or-earlier-than,但在运行时,它不会将日期值传递给该类。下面是我的html代码。我正在尝试从javascript获取日期并打印出来进行测试。日期是打印出来的,但是当把它传递给函数时,它不起作用。

代码语言:javascript
复制
  <div class="row">
 <div class="hh-dock-page-view panel">
 <div class="panel-body">
  <div class="container">
    <h2 class="hh-page-header">Issue Detail</h2>
    <h3 class="hh-action-heading"><span ng-hide="ctrl.readOnly">Edit </span>Details - {{ctrl.returnCurDate()}} - {{ctrl.issue.issue_date}}"</h3>
    <hh-model-form name="issueForm" model="ctrl.issue" page-controller="ctrl" submit-success="ctrl.submitSuccess" hide-actions="ctrl.readOnly">
        <h2 class="hh-page-header extra-margin">{{modelFormCtrl.model.provider_name_spec_prac}} - {{ctrl.issue.issue_date}}</h2>
        <div class="row">
            <div class="col-sm-6">

          <hh-field-messages>
            <label for="issue_date">Issue Date</label>
            <hh-american-date-field
               id="issue_date"
               name="issue_date"
               ng-model="modelFormCtrl.model.issue_date"
               ng-blur="modelFormCtrl.pageController.setStatus(this)"
               ng-disabled="modelFormCtrl.pageController.readOnly"
               same-or-earlier-than="{{ctrl.issue.issue_date}}"
               same-or-earlier-than-msg="Enter a date that is on or before Resolution Date."
               >
            </hh-american-date-field>
        </hh-field-messages>
            <div class="hh-breath"></div>
          </div>
          </div>



    </hh-model-form>
  </div>
</div>

下面是我的angularjs文件:

代码语言:javascript
复制
angular.module('Prm')
.controller('IssueDetailController',
['$scope', '$q', '$route', '$location', '$routeParams', 'moment', 'IssueService', 'IssuePriorityService', 'ActivityService',
 'ProviderService', 'DirtyFormCheckingService', 'ConfirmBox', 'ErrorAlertService', 'AlertBoxService', 'DateService',
 'ReferenceTableDataAdapter',
function ($scope, $q, $route, $location, $routeParams, moment, IssueService, IssuePriorityService, ActivityService, ProviderService,
          DirtyFormCheckingService, ConfirmBox, ErrorAlertService, AlertBoxService, DateService,
          ReferenceTableDataAdapter){
    'use strict';
    var ctrl = this,
        isExisting = false,
        issuePriority = null,
        initPromises = [];

    var currentUser = cpm.authentication.user.report_ownership_role_code;
    ctrl.isAdmin = cpm.authentication.user.dss_role_list.split(",").includes('USERADMIN');
    ctrl.readOnly = true;

    var getNameForEdit = function(row) {
        if (ctrl.readOnly) return 'View';
        return 'Edit';
    };

    ctrl.providerAdapter = ReferenceTableDataAdapter('provider');
    ctrl.ownerRoleAdapter = ReferenceTableDataAdapter('dss_report_owner_contact');
    ctrl.providerIssueStatusAdapter = ReferenceTableDataAdapter('provider_issue_status');
    ctrl.providerIssueSiteAdapter = ReferenceTableDataAdapter('provider_issue_site');
    ctrl.providerIssuePriorityAdapter = ReferenceTableDataAdapter('provider_issue_priority');
    ctrl.providerIssueCategoryAdapter = ReferenceTableDataAdapter('provider_issue_category');

    if($routeParams.issue_code) {
        isExisting = true;
        initPromises.push(IssueService.get({id: $routeParams.issue_code}).$promise.then(function (data) {
            ctrl.issue = data;

            // placing this on the controller for the Parent Issue grid (if exists). Grid needs list of objects...
            ctrl.parentActivities = [{'parent_provider_activity':ctrl.issue.parent_provider_activity,
                                      'parent_provider_activity_activity_date':ctrl.issue.parent_provider_activity_activity_date,
                                      'parent_provider_activity_description': ctrl.issue.parent_provider_activity_description}];
        }));

    } else {
        ctrl.issue = IssueService.wrapData({
            description: '',
            resolution: '',
            status: 'N',
            site: '',
            priority: 'N',
            category: '',
            provider: $routeParams.provider_code,
            issue_date: new Date(),
            owner_role: currentUser
        });

        ctrl.hide_resolution = true;
        //ctrl.issue_date = new Date();

        /* An issue may be created from a provider */
        if($routeParams.provider_code) {
            initPromises.push(ProviderService.get({id: $routeParams.provider_code}).$promise.then(function (data) {
                ctrl.issue.provider = data.provider_code;
            }));
        }
    }

    /* Issues can have their due dates set based on their priority */
    initPromises.push(IssuePriorityService.getPrioritiesMap().then(function (priorities) {
        issuePriority = priorities;
        if(!isExisting) {
            ctrl.issue.due_date = moment(DateService.todayAsUtcDate()).add(issuePriority.N, 'day').toDate();
        }
    }));

    /* Initialization */
    $q.all(initPromises).then(function () {
        /* Allow editing existing record only by owner & admins */
        if(!isExisting || ctrl.isAdmin || ctrl.issue.owner_role === cpm.authentication.user.report_ownership_role_code) {
            ctrl.readOnly = false;
        }

        // TODO: when grid actions are added
        // ctrl.activitiesGrid.hideAddButton = ctrl.readOnly;

        DirtyFormCheckingService($scope, 'issueForm', ctrl.issue);
    });

    ctrl.setDueDate = function (newModel, newCode) {
        ctrl.issue.due_date = moment(ctrl.issue.issue_date).add(issuePriority[newCode], 'day').toDate();
    };

    ctrl.setResolutionDate = function (newModel, newCode) {
        // ctrl.hide_resolution = (newCode !== 'R');
        if (newCode == 'R') {
            ctrl.issue.resolution_date = DateService.todayAsUtcDate();
        } else {
            ctrl.issue.resolution_date = null;
        }
    };

    $scope.$watch('ctrl.issue.status', function (newCode) {
        if(ctrl.issue) {
            ctrl.hide_resolution = (newCode !== 'R');
        }
    });

    ctrl.setStatus = function (event){
        if (ctrl.issue.resolution_date) {
            ctrl.issue.status = "R";
        } else {
            ctrl.issue.status = "N";
        }
    };

    ctrl.submitSuccess = function() {
        $location.url('/');
    };

    ctrl.parentActivityConfig = {
        modelSetName: 'parentIssues',
        actions: {
            editRow: {
                label: function(row) {
                    return ctrl.readOnly ? 'View' : 'Edit';
                },
                active: true,
                callback: function(row){
                    $location.path('/activity/'+ctrl.issue.parent_provider_activity);
                }
            },
            deleteRow: {
                active: false
            }
        },
        rowActions: ['editRow'],
        columns: [
            {col_description: 'Activity Date',
             datatype: 'date',
             model_field: 'parent_provider_activity_activity_date',
             field_type: 'american_date',
             field_name: 'activityDate'
            },
            {col_description: 'Description',
             datatype: 'text',
             model_field: 'parent_provider_activity_description',
             field_type: 'text',
             field_name: 'description'
            },
        ]
    };


    ctrl.activitiesTableConfig = {
        modelSetName: "activities",
        serializerChildName: 'activities',
        actions: {
            addRow: {
                label: 'Add Activity',
                callback: function(){
                    $location.path('/provider/'+ctrl.issue.provider+'/add_activity/'+ctrl.issue.provider_issue_code);
                },
                active: function(row) {return !ctrl.readOnly;}
            },
            editRow: {
                label: function(row) {
                    return getNameForEdit(row.modelSet);
                },
                active: true,
                callback: function(row){
                    $location.path('/activity/'+row.modelSet.provider_activity_code);
                }
            },
            deleteRow: {
                active: function(row) {return !ctrl.readOnly;},
                callback: function(row){
                    _.pull(ctrl.issue.activities, row.modelSet);
                }
            }
        },
        rowActions: ['editRow', 'deleteRow'],
        columns: [
            {col_description: 'Date',
             datatype: 'date',
             model_field: 'activity_date',
             field_type: 'american-date',
             field_name: 'activity_date'
         },
            {col_description: 'Type',
             datatype: 'text',
             model_field: 'provider_activity_type_description',
             field_type: 'text',
             field_name: 'provider_activity_type_description'
         },
            {col_description: 'Notes',
             datatype: 'text',
             model_field: 'description',
             field_type: 'text',
             field_name: 'description'
         },
            {col_description: 'Owner',
             datatype: 'text',
             model_field: 'owner_comp_name',
             field_type: 'text',
             field_name: 'owner_comp_name'
         },
        ]
    };
}]);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-06 20:58:19

我正在尽力理解你的问题,但这里有很多代码要看。我确实了解到,您正试图将当前日期传递给一个名为“同-或-早于”的函数。但是,我似乎无法在控制器文件中找到具有该名称的函数。

我假设您有一个接受当前日期的自定义指令(属性指令)。

无论哪种方式,传递当前日期的问题的一个简单解决方案可能是编写一个小函数,在调用该函数时,使用Javascript的本机" date“对象返回日期。

也许在你的控制器里是这样的:

代码语言:javascript
复制
ctrl.returnCurDate = function() {
  return new Date();
};

这样,在标记中,您可以调用我们定义的方法,因为它附加到控制器的作用域。

代码语言:javascript
复制
same-or-earlier-than = "ctrl.returnCurDate()"

我希望我能以相关的方式回答你的问题,如果我误解了你的问题,请继续问。

祝你好运。

P.S.从本质上讲,使用JS的本机日期构造函数会带来一些令人痛苦的格式化问题,我会考虑使用诸如"Moment.js“这样的库来帮助您在调用时解析返回的值:

代码语言:javascript
复制
new Date();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44399035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档