Подтвердить что ты не робот

AngularJS ngInit с датой

Я кодирую в .NET MVC и хотел бы передать сохраненный объект DateTime в front-end как начальное значение для объекта Date в контроллере.

Вот что я пробовал:

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

Это не работает, и я получаю синтаксическую ошибку.

Как передать объект Date в качестве исходного свойства для переменной области видимости?

http://jsfiddle.net/xX8LJ/

ОБНОВЛЕНИЕ

Я забыл включить код Razor в свой пример кода.

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

Ответ 1

Angular область не знает о Date

Попробуйте использовать:

 $scope.Date = new Date();

и после:

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

Демо 1 Fiddle

В качестве ответа для вашего EDIT,

переписать 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

Ответ 2

Другой способ сделать это, в моем случае я добавил функцию now в моем $rootScope в блок конфигурации:

...
$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