AngularJS ng Init with Date

时间:2013-12-04 10:23:14

标签: angularjs date angularjs-ng-init

我在.NET MVC中进行编码,并希望将存储的DateTime对象作为控制器中Date对象的初始值传递给前端。

以下是我尝试的内容:

ng-init="params.datetime = new Date()"

这似乎不起作用,我收到语法错误。

如何将Date对象作为范围变量的初始属性传递?

http://jsfiddle.net/xX8LJ/

更新

我忘了在代码示例中包含Razor代码。

ng-init="params.datetime = new Date('@Model.DepartureTime.ToString("s")')"

2 个答案:

答案 0 :(得分:22)

角度范围不了解Date

尝试使用:

 $scope.Date = new Date();

之后:

<div ng-controller="myController"
     ng-init="params.datetime = Date"
 >Current time: {{params.datetime}}</div>

演示1 Fiddle

作为您编辑的答案,

重写Date作为方法:

$scope.Date = function(arg){
   return new Date(arg);
};

 <div ng-controller="myController" 
      ng-init="params.datetime = Date('Tue Feb 18 2013 00:00:00 GMT+0200 (CEST)')"
  >Current time: {{params.datetime}}</div>

演示2 Fiddle

答案 1 :(得分:1)

另一种方法,在我的情况下,我在配置块中的$ rootScope中添加了一个now函数:

...
$rootScope.now = now;

/**
* returns now as a date
* 
* @function 
* @param arg {object} date arguments
* @returns {Date} now
*/
function now(arg) {
    return new Date(arg);
}
...

然后可以像这样使用:

<div ng-init="product.date = $root.now();"...

或只是

<div ng-init="product.date = now();"...

但我更喜欢使用$ root,因此我们确切知道now函数的位置