问题
I'm coding in .NET MVC and would like to pass a stored DateTime object to the front-end as an initial value for a Date object in a controller.
Here's what I've tried:
ng-init="params.datetime = new Date()"
This doesn't seem to work, and I'm getting a syntax error.
How can I pass in a Date object as an initial property for a scope variable?
http://jsfiddle.net/xX8LJ/
UPDATE
I forgot to include the Razor code in my code sample.
ng-init="params.datetime = new Date('@Model.DepartureTime.ToString("s")')"
回答1:
Angular scope doesn't know about Date
Try to use:
$scope.Date = new Date();
and after:
<div ng-controller="myController"
ng-init="params.datetime = Date"
>Current time: {{params.datetime}}</div>
Demo 1 Fiddle
As an answer for your EDIT,
rewrite Date
as method:
$scope.Date = function(arg){
return new Date(arg);
};
and:
<div ng-controller="myController"
ng-init="params.datetime = Date('Tue Feb 18 2013 00:00:00 GMT+0200 (CEST)')"
>Current time: {{params.datetime}}</div>
Demo 2 Fiddle
回答2:
Another way to do it, in my case I've added a now function in my $rootScope in a config block:
...
$rootScope.now = now;
/**
* returns now as a date
*
* @function
* @param arg {object} date arguments
* @returns {Date} now
*/
function now(arg) {
return new Date(arg);
}
...
and then can be used like this:
<div ng-init="product.date = $root.now();"...
or just
<div ng-init="product.date = now();"...
but I prefer using $root so we know exactly where the now
function is located
来源:https://stackoverflow.com/questions/20372705/angularjs-nginit-with-date