1

我有一个取自 ng-book 的代码:

<!doctype html>
<html ng-app>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.js"></script>
</head>
<body>
    <div ng-controller="MyController">
        <h1>Hello {{ clock.now }}!</h1>
    </div>
    <script type="text/javascript">
    function MyController($scope) {
        var updateClock = function() {
            $scope.clock.now = new Date();
        };
        setInterval(function() {
            $scope.$apply(updateClock);
        }, 1000);
        updateClock();
    };
    </script>
  </body>
</html>

我这样做解决了它:

<!doctype html>
<html ng-app>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.js"></script>
</head>
<body>
    <div ng-controller="MyController">
        <h1>Hello {{ clock }}!</h1>
    </div>
    <script type="text/javascript">
    function MyController($scope) {
        var updateClock = function() {
            $scope.clock = {'now': new Date()};
        };
        setInterval(function() {
            $scope.$apply(updateClock);
        }, 1000);
        updateClock();
    };
    </script>
  </body>
</html>

我的问题是为什么第一个代码不起作用?

更新:更新了第二个代码。

4

4 回答 4

6

$scope.clock.now = new Date();您尝试将属性设置now为未定义的对象 ( clock)。将$scope.clock = {'now': new Date()};您设置clock为对象,然后分配属性。一个详细的方法是:

$scope.clock = {}; 
$scope.clock.now = 'value';
于 2013-11-05T12:30:35.437 回答
1

因为第一个示例中的时钟对象没有“现在”属性

于 2013-11-05T12:24:51.670 回答
1

Date 的 now() 方法是一个静态方法,所以你可以这样说:

<div ng-controller="MyController">
    <h1>Hello {{ clock.now() }}!</h1>
</div>
<script type="text/javascript">
function MyController($scope) {
    var updateClock = function() {
        $scope.clock = Date;
    };

如果你真的想调用 date 对象的 now 方法,它会给你几毫秒。

于 2013-11-05T12:36:48.067 回答
0

第一个代码不起作用,因为没有定义$scope.clock(Angular 引发错误:TypeError: Cannot set property 'now' of undefined

所以这

$scope.clock.now = new Date();

应该是这样的:

$scope.clock = {};
$scope.clock.now = new Date();

或者像你一样解决它:

$scope.clock = {now: new Date()}
于 2013-11-05T12:43:49.653 回答