Angular UI Bootstrap $ scope。$ modalInstance.close原因:无法读取属性' value'未定义的

时间:2014-02-14 00:48:50

标签: jquery angularjs angular-ui

我有几个模态,2个正常工作,1在关闭时获得此异常。 (它确实设法关闭模态,但角度注销了这个例外)。

我看得更近了,$modalInstanceclose方法中定义,但openedWindows.get($modalInstance)返回undefined

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:16)

这是v0.10.0中$ modal中的错误。请参阅this github issue,并将在下一版本中修复。

@IvanZh已在此处为类似问题提供了答案 - Dismiss angular modal on URL change - errors in console

在你的控制器中,一旦你执行$ modal.open,添加一个finally块,你明确地将modalInstance设置为null。上面的问题中提供了关于URL更改的解雇模式的plunkr。你的应该非常相似。

$scope.modalInstance = $modal.open({
    templateUrl: 'add.html',
    controller: 'AddCtrl'
  });
  $scope.modalInstance.result.then(function() {
    console.log('Success');
  }, function() {
    console.log('Cancelled');
  })['finally'](function(){
    $scope.modalInstance = undefined  // <--- This fixes
  });

答案 1 :(得分:1)

如果您尝试立即关闭$ modal,也会出现此错误。当我意外忘记在$ timeout的调用中包含延迟参数时,我碰到了这个。这是错误的代码:

var modal = $modal.open({
  templateUrl: 'static/partials/simple.dialog.html',
  controller: function($scope) {
    $scope.opts = opts;
  }
});

$timeout(function() {
  simple.close();
});

这是通过添加超时来修复的:

$timeout(function() {
    simple.close();
}, opts.timeout);

答案 2 :(得分:1)

$文档(https://angular-ui.github.io/bootstrap/)说: 此外,与模态内容相关的范围增加了两种方法:

$接近(结果)

$驳回(原因)。

javascript虽然与此无关,但注入$ modalInstance并不起作用。 这对我有用:

$http.get('my/api/method', { params: { id: id } })

答案 3 :(得分:0)

这种方法对我来说效果不佳。

我也有价值&#39;未定义的消息,来自基于应用程序状态的一系列对话框。一个对话框是一个旋转图标&#34;您的请求是Processing&#34;,一旦$ http请求被解析,它就在父作用域中关闭。

但是使用这个和前面提到的结果它不会关闭。然后:

if ($scope.modalInstance) {
     $scope.modalInstance.dismiss();
}

...

$scope.modalInstance.result.then(function() {
    console.log('Success');
  }, function() {
    console.log('Cancelled');
  })['finally'](function(){
    $scope.modalInstance = undefined;
  });

当我切换到以下时,一切都开始起作用了:

$scope.modalInstance.result.then(function() {
        ...
       $scope.modalInstance = undefined;
}, function() {
       ...
       $scope.modalInstance = undefined;
});

可能错误是$ scope.modalInstance设置为undefined而没有关闭/解除原始实例。