Javascript Angularjs-无法读取属性';拆分';未定义的

Javascript Angularjs-无法读取属性';拆分';未定义的,javascript,ruby-on-rails,angularjs,Javascript,Ruby On Rails,Angularjs,我正在尝试拆分使用文本字段输入的日期。我想要一个数组 在html文件中 <%= text_field_tag :checkoutdate, params[:checkoutdate],:placeholder => 'Select Date', :class=>'form-control datepicker input-lg',:required=>true,"ng-model" => "checkoutdate"%> <p class='b

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

在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>
我在控制台中得到了错误

无法读取未定义的属性“split”


我做错了什么?

当值尚未定义时,您正在进行脏检查。在运行函数之前,只需检查以确保值不是未定义的

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;
                }

            }]);

你什么时候开始分拆?(我猜没有值或无效值,因为如果模型无效,它将变得未定义)在输入字段中输入值后,如何运行拆分?何时执行拆分?
$watch
<代码>单击下一步?或者?我是angular的新手,我有一个名为checkoutdate的输入字段模型,所以我在controller中访问它并调用split函数。在我选择了一个日期之后,我该如何称呼它?请提供更多代码,我不知道在没有看到它的情况下你是如何做的。这是有效的。但使用此代码时不会显示字段数组
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;
                }

            }]);