AngularJs和moment.js不起作用

时间:2015-02-02 19:16:27

标签: javascript angularjs momentjs

我只想与Angular Js建立一个计算日期的简短网页。 moment.js来自页面:http://momentjs.com/

这是当前的代码:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
       "http://www.w3.org/TR/html4/strict.dtd">
 <html>
 <head>
    <title>Date Calculator</title>
    <script   src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js">      </script>
    <script  src="moment.js"></script>


 </head>
   <body>
      <script>
         function personController($scope) {
            moment();
            $scope.year = moment().get('year');
            $scope.month = moment().get('month');
            $scope.day = moment().get('day');
      }
      </script>
    <h1>Date Calculator</h1>

<div ng-app="" ng-controller="personController">
    <form action="datecalc.html">
      <h2>Startdate</h2>
      <table> 
      <tr><td> <p>Day: <br><input name="day" type="number" size="20" maxlength="20" min="1" max="31" ng-model="day"></p></td>
        <td> <p>Month: <br><input name="month" type="number" size="20" maxlength="20" min="1" max="12" ng-model="month"></p></td>
        <td> <p>Year: <br><input name="year" type="number" size="20" maxlength="20" min="1980" max="4000" ng-model="year"></p></td>
      </tr>
      <tr>
      <td> 
        Add/Substract  
      </td>     
      <td>Days:   </td>
      <td>Months: </td>
      <td>years:  </td>
      </tr>
      <tr>
      <td> <select id = "todo">
               <option value = "1">add</option>
               <option value = "2">substract</option>
            </select>
      </td>
      <td><input name="days" type="number" size="10" maxlength="100" ng-model="days"></td>
      <td><input name="months" type="number" size="10" maxlength="100" ng-model="months"></td>
      <td><input name="years" type="number" size="10" maxlength="100" ng-model="years"></td>
      </tr>

      </table>
    </form>
</div>

</body>
</html>

加载页面时,字段日,月和年应设置为当前日期。

知道为什么这不起作用吗?

最好的问候

1 个答案:

答案 0 :(得分:0)

我会做出正确答案。

虽然这是做角度的一种非常糟糕的方法,你不应该养成这样做的习惯,角度部分工作正常。问题是时刻。

我不太了解时刻,但在这种情况下你甚至不需要它。您可以使用javascript日期对象。像这样......

        var d = new Date();
        $scope.year = d.getFullYear();
        $scope.month = d.getMonth();
        $scope.day = d.getDate();

还应注意,当使用getMonth()时,它将月份作为数组的索引返回,因此January = 0,Feb = 1,12月为11。

编辑:如此快速地看,时刻做同样的事情,并且他们也会在&#39;日做同样的事情。 Day给你1,这是数组的第二个索引,这将是第二天,这是正确的。使用

moment().get('date');

相反,为您提供实际的日期,然后只需在月份结果中添加+1即可。