只是想了解为什么在这种情况下我需要使用 $scope.$apply ?根据我读到的有关该主题的所有信息,我不应该这样做,因为一切都在 Angular 内部发生?我错过了什么?
在我的 Controller 中:
$scope.savePreset = function(columns, $event){
$event.preventDefault();
preset.name = prompt("Please enter preset name", "My Preset");
if (preset.name != null) {
preset.columns = $scope.columns;
$scope.presets[preset.name] = preset; // (Object)
// Without $scope.$apply() here, view isn't updated. Why?
alert('Your preset "' + preset.name + '" has been saved.');
$scope.loadPreset(preset.name);
} else {
alert('Please enter a valid name.');
}
}
(
savePreset
函数在 ng-click 指令中调用,并且 preset in presets
有一个 ng-repeat ,它没有更新)。谢谢,
皮姆
最佳答案
正如评论@Sergiu Paraschiv 中提到的,使用包装在 window
中的函数正在停止 angular $digest
循环,这就是为什么我的建议是使用 $window
provider 和 $window.prompt
和 $window.alert 函数,我认为它们会起作用
here is a example
关于javascript - 为什么在这种特殊情况下 View 没有更新? ($scope.$apply),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26527703/