【问题标题】:Angularjs - Cannot read property 'split' of undefinedAngularjs - 无法读取未定义的属性“拆分”
【发布时间】:2014-05-03 14:22:21
【问题描述】:

我正在尝试拆分使用文本字段输入的日期。我想要它在一个数组中。

在html文件中

<%= text_field_tag :checkoutdate, params[:checkoutdate],:placeholder => 'Select Date', :class=>'form-control datepicker input-lg',:required=>true,"ng-model" => "checkoutdate"%>

    <p class='bg-danger' ng-show="isInvalidDate()">Check-out date cannot be lesser than check-in date</p>

在控制器 js 文件中

App.controller('validationController',['$scope', function($scope){
$scope.isInvalidDate = function(){
     var checkin = $scope.checkindate.split('-');
     var checkout = $scope.checkoutdate.split('-');

    if($scope.checkin[0]>$scope.checkout[0] || $scope.checkin[1]>$scope.checkout[1]){
        return true;
    }

}

我在控制台中收到错误

Cannot read property 'split' of undefined

我做错了什么?

【问题讨论】:

  • 什么时候进行拆分? (我的猜测是没有值或无效值,因为如果模型无效,模型将变为未定义)
  • 在输入字段中输入值后如何运行拆分?
  • 什么时候进行拆分? $watch? ngClick?还是?
  • 我是 Angular 新手,我有一个名为 checkoutdate 的输入字段模型,所以我在控制器中访问它并调用拆分函数。选好日期后怎么称呼?
  • 请提供更多代码,我不确定您在没有看到它的情况下是做什么或如何执行此操作的。

标签: javascript ruby-on-rails angularjs


【解决方案1】:

当值尚未定义时,您会遇到脏检查。只需在运行函数之前检查以确保该值不是 undefined

App.controller('validationController', ['$scope',
        function ($scope) {
            $scope.isInvalidDate = function () {
                if($scope.checkindate === undefined || $scope.checkoutdate === undefined){
                    return false;
                }
                var checkin = $scope.checkindate.split('-');
                var checkout = $scope.checkoutdate.split('-');

                if ($scope.checkin[0] > $scope.checkout[0] || $scope.checkin[1] > $scope.checkout[1]) {
                    return true;
                }

            }]);

【讨论】:

  • 这行得通。但使用此代码时不显示字段数组
猜你喜欢
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
相关资源
最近更新 更多