Angular $ scope不会在bootbox回调中更新

Dan*_*oul 7 javascript angularjs angularjs-scope bootbox ng-boot-box

这是我关于SO的第一个问题.

当我在作用域上拼接数组元素时,在bootbox.js的回调中完成时,不会反映该更改.

作品:

$scope.deleteA = function() {
    if (confirm("Really delete Item 3?")) {
      $scope.itemsA.splice(2, 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

不起作用:

$scope.deleteB = function() {
    bootbox.confirm("Really delete Item 3?", function(answer) {
      if (answer === true) {
        $scope.itemsB.splice(2, 1);
      }
    });
}
Run Code Online (Sandbox Code Playgroud)

我主要是想了解原因.这对我来说比拥有一个花哨的解决方案更重要.

我创建了一个Plunker来显示效果

Gru*_*ndy 7

角度范围变量从角度的ouside世界发生任何变化,没有亲密的角度消化系统来运行消化周期来更新绑定.
bootbox回调角度不知道有什么变化,这就是为什么不更新视图.
要解决此问题,您需要使用$apply方法$timeout服务手动启动摘要周期 ,如下所示

bootbox.confirm("Really delete Item 3?", function(answer) {
  if (answer === true) {
    $scope.$apply(function(){
        $scope.itemsB.splice(2, 1);
    });
  }
});
Run Code Online (Sandbox Code Playgroud)