目前我正在检查对象是否正在改变。在改变我操纵它并改变一些值之后。更改后,我将其保存到我的服务。在完成所有操作和节省之后,我从服务中获取值,然后将其附加到$ scope.rows。记录$ scope.rows后,我得到了预期的结果,但我的视图没有更新。谁知道如何解决这个问题?
我的代码:
//Set timeout var only
var updateDelay = null;
$scope.$watch('rows', function ( newValue, oldValue )
{
//Clear timeout
clearTimeout(updateDelay);
//Timeout
updateDelay = setTimeout(function ()
{
//Iterate over all rows to find the updated row
for ( var i = 0; i < newValue.length; i++ )
{
//If start_time, end_time and interval are filled in
if ( (newValue[i].start_time && oldValue[i].end_time && oldValue[i].interval) &&
(
(newValue[i].start_time.toString() != oldValue[i].start_time.toString()) ||
(newValue[i].end_time.toString() != oldValue[i].end_time.toString()) ||
(newValue[i].interval != oldValue[i].interval)
) )
{
//Set the interval to 4 as a test
newValue[i].interval = 4;
console.log('This row is changed' + i);
}
}
//Push the rows to the Service and then get the new values
// and bind it to the $scope.rows for the ng-repeat
$scope.rows = SheetService.setValues(newValue);
}, 750);
}, true);
答案 0 :(得分:1)
将setTimeout替换为$ timeout,你会没事的。
这是因为setTimeout将在angular循环之外执行。当你这样做时,你需要调用$ scope。$ apply()作为最后一条指令。或者您可以使用$ timeout来为您完成这项工作