Angular的NgClick具有过时的作用域。
Angular的NgClick具有过时的作用域。
我遇到了一个奇怪的行为,但我不知道是谁的错。
我在$scope
中有三个变量,可以由用户更改。它们通过ng-model
绑定到一个select
对象上。
HH : MM : new_hour = {{ new_hour }} new_minute = {{ new_minute }}
变量的初始化如下:
$scope.minutes = []; for(var i = 0; i < 60; ++i) { var min = String(i); if(i < 10) min = "0" + min; $scope.minutes.push({ val: i, label: min}); } $scope.hours = $scope.minutes.slice(0, 24); $scope.new_minute = $scope.minutes[0]; $scope.new_hour = $scope.hours[0];
每当我选择一个不同的时间时,$scope.new_hour
和$scope.new_minute
的值会立即按预期更改。
然而,我还有一个按钮,它有一个ngClick
,并调用$scope
中的某个函数。
如果我选择一个新的(分钟)值,然后点击按钮,那么$scope
函数会看到旧的值而不是新的值:
$scope.add_value = function() { console.log("new_minute: " + $scope.new_minute.val); }
假设我选择了03然后点击按钮。控制台显示new_minute: 0。
然而,如果我修改我的代码:
和
$scope.add_value = function(new_minute) { console.log("new_minute: " + new_minute); }
那么传递给add_value
的值总是正确的。如果我打开检查控制台并检查$scope.new_minute.val
的值,那么$scope.new_minute.val
与局部变量new_minute
不同。
我已经准备了一个基本结构的代码片段:https://jsfiddle.net/shaoran/tnvou6ud/1/
在那里一切都按预期工作,我真的无法重现这种行为。有人有任何想法可能是怎么回事吗?