我正试图像今天这样设定今天的最长日期:
My controller:
vm.maxDate= maxDate;
function maxDate() {
return new Date((new Date()).getFullYear(), (new Date()).getMonth(), (new Date()).getDate());
}
我的HTML:
<md-datepicker
md-placeholder="Date of Creation"
md-max-date="myCtrl.maxDate()"
ng-model="myCtrl.form.startDate">
</md-datepicker>
它按预期工作,用户无法在maxDate之后选择任何内容。但是当我在我的html中写md-max-date =“myCtrl.maxDate()”时,我得到了这个角度误差。我不知道为什么会这样。任何帮助将不胜感激。感谢
这是错误的链接 Link To Error
这是错误:
错误:$ rootScope:infdig 无限$ digest循环
达到10 $ digest()次迭代。中止! 观察者在最后5次迭代中被解雇:[[{“msg”:“fn:function(c,e,f,g){f = d&amp;&amp; g?g [0]:a(c,e,f, g);返回b(f,c,e)}“,”newVal“:”2017-06-18T04:00:00.000Z“,”oldVal“:”2017-06-18T04:00:00.000Z“}] ,[{“msg”:“fn:function(c,e,f,g){f = d&amp;&amp; g?g [0]:a(c,e,f,g); return b(f, C,E)} “ ”的newval“: ”2017-06-18T04:00:00.000Z“, ”OLDVAL“: ”2017-06-18T04:00:00.000Z“}],[{ ”msg“ 中:” fn:function(c,e,f,g){f = d&amp;&amp; g?g [0]:a(c,e,f,g); return b(f,c,e)}“,” newVal“:”2017-06-18T04:00:00.000Z“,”oldVal“:”2017-06-18T04:00:00.000Z“}],[{”msg“:”fn:function(c,e, f,g){f = d&amp;&amp; g?g [0]:a(c,e,f,g); return b(f,c,e)}“,”newVal“:”2017-06- 18T04:00:00.000Z“,”oldVal“:”2017-06-18T04:00:00.000Z“}],[{”msg“:”fn:function(c,e,f,g){f = d&amp; ;&amp; g?g [0]:a(c,e,f,g);返回b(f,c,e)}“,”newVal“:”2017-06-18T04:00:00.000Z“, “OLDVAL”: “2017-06-18T04:00:00.000Z”}]]
答案 0 :(得分:2)
更改控制器以初始化最大日期:
vm.maxDate= initMaxDate();
function initMaxDate() {
return new Date((new Date()).getFullYear(), (new Date()).getMonth(), (new Date()).getDate());
}
HTML
<md-datepicker
md-placeholder="Date of Creation"
md-max-date="myCtrl.maxDate ̶(̶)̶ "
ng-model="myCtrl.form.startDate">
</md-datepicker>
当AngularJS模板包含带有函数的AngularJS表达式时,框架会多次执行该函数,直到表达式稳定为止。由于函数每次都返回一个新的Date对象,因此范围变量永远不会稳定,导致$rootScope:infdig error
AngularJS将应用程序分为模型,视图和控制器。控制器创建并修改模型,模板根据模型渲染视图。模板永远不应该创建模型。它应该只根据模型渲染视图,并向控制器提供事件的修改。
答案 1 :(得分:0)
我认为MIN和Max将采用变量而不是函数作为输入
<md-datepicker
md-placeholder="Date of Creation"
md-max-date="myCtrl.maxDate"
ng-model="myCtrl.form.startDate">
</md-datepicker>
控制器
var today = new Date();
$scope.maxDate = new Date(today.getFullYear(), today.setMonth(), today.getDate());
注意: - 为什么要创建年份,月份和日期的新数据,您可以尝试这样做。这是一种简单而正确的方法。 更多信息 https://material.angularjs.org/latest/demo/datepicker
plnkr.co/edit/jEd8I2IbxypVPu0uGU1y?p=preview