Angular的NgClick已经过时

时间:2017-09-12 15:44:23

标签: javascript angularjs

我遇到了一种奇怪的行为,但我不知道它是谁的错。

我在$scope中有三个可由用户更改的变量。它们通过select绑定到ng-model对象。

<select ng-options="hour.label for hour in hours track by hour.val" ng-model="new_hour"></select> HH :
<select ng-options="minute.label for minute in minutes track by minute.val" ng-model="new_minute"></select> MM :

<br />

new_hour = {{ new_hour }}<br />
new_minute = {{ new_minute }} </br>

其中变量初始化如下:

$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中调用了一些功能。

<button ng-click="add_value()">Add value</button>

如果我选择一个新的(分钟)值,然后点击按钮,那么$scope函数会看到旧值而不是新值:

$scope.add_value = function()
{
    console.log("new_minute: " + $scope.new_minute.val);
}

我们说我选择 03 ,然后点击按钮。控制台显示 new_minute:0

但是,如果我修改我的代码:

<button ng-click="add_value(new_minute.val)">Add vaue</button>

$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 个答案:

没有答案