【发布时间】:2016-04-09 00:09:52
【问题描述】:
我发现我的 Angular 脚本正在运行:
$scope.CurrentUser = null;
$scope.DatePicker = new Date();
$scope.$watch('DatePicker', function (newValue, oldValue) {
if (newValue > new Date())
$scope.DatePicker = new Date();
}, true);
<div>
<input data-ng-model="DatePicker" type="date" id="datepicker" />
</div>
但如果我添加一个 if 语句则不会:
<div data-ng-if="!CurrentUser">
<input data-ng-model="DatePicker" type="date" id="datepicker" />
</div>
试试吧: http://codepen.io/anon/pen/jWBEVM
但我不明白为什么。有已知问题吗?有人可以帮忙吗?
【问题讨论】:
-
ng-if创建她自己的范围,所以 DatePicker 在控制器的范围内无效 -
只要你不改变 if 语句中的 DatePicker,它们是同步的......所以,sope 似乎是一样的
-
这就是原型继承的工作原理:您可以读取父属性,但是当您尝试写入时 - 您创建自己的属性而不是更改父属性
标签: javascript angularjs if-statement angularjs-scope angularjs-watch