我遇到了一种奇怪的行为,但我不知道它是谁的错。
我在$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/
一切都按预期工作,老实说,我无法重现这种行为。有谁知道可能会发生什么?