如何在 angularjs 中使用拆分

how to use split in angularjs

我会像那样获取 ng-model 的日期

Thu May 21 2015 18:47:07 GMT+0700 (SE Asia Standard Time)

但它在控制台中显示 "TypeError: date.split is not a function" 如何修复它?

   $scope.test = function(date) {
    console.log(date);
    $scope.d = (date.split(' ')[0]);
    $scope.m = (date.split(' ')[1]);
    $scope.y = (date.split(' ')[2]);
    $scope.dd = (date.split(' ')[3]);

}

问题是 date 不是字符串,它是 Date 对象实例。所以你不能对它使用 split 。为了使用它,您可能需要先将其转换为 String。比如像他的:

$scope.test = function(date) {
    date = date.toString();
    $scope.d = (date.split(' ')[0]);
    $scope.m = (date.split(' ')[1]);
    $scope.y = (date.split(' ')[2]);
    $scope.dd = (date.split(' ')[3]);    
};

当您控制台记录它时 console.log(date); 它会自动调用 toString 这就是为什么它对您来说看起来像一个字符串。

另一件事,你真的不应该使用拆分来提取数据。使用 Date 对象的方法,如 getMonth.getFullYear

可能您传递的日期变量不是字符串,而是没有 split() 方法的 Javascript Date object。您可以继续并将其转换为可以拆分的字符串:

$scope.d = (date.toString().split(' ')[0]);

这可行但效率不高,因为日期将被组合成一个字符串,然后再次解析。更好的方法是使用日期对象本身的属性:

$scope.d = date.getDate();
$scope.m = date.getMonth() + 1;
$scope.y = date.getFullYear();

等等...

reference上找到所有可用的方法。 更好的办法是保持日期本身不变,并在视图中需要的地方使用日期属性,例如:

<div class="myDate">Year: {{date.getFullYear()}}