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")')"
Ответы
Ответ 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