Angular的NgClick具有过时的作用域。

11 浏览
0 Comments

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/

在那里一切都按预期工作,我真的无法重现这种行为。有人有任何想法可能是怎么回事吗?

0