通常关闭AngularJS中的bootstrap模式对话框,我只需将$ modalInstance注入对话框的控制器,然后调用$ modalInstance.dismiss()。
但是,我有一个案例,我在两个视图之间共享一个控制器。第一个视图永远不会显示在模态对话框中,第二个视图始终显示在模态对话框中。
我希望有一种方法可以选择将$ modalInstance注入控制器,但是在打开未定义$ modalInstanceProvider的非模态视图时会出现异常。我还尝试通过将$ injector注入控制器并使用:
来获取$ modalInstance的访问权限var modalInstance = $injector.get('$modalInstance');
modalInstance.dismiss('cancel');
但这也行不通。在任何一种情况下,进样器都无法解析$ modalInstance。
还有另一种方法可以用$ modalInstance关闭对话框吗?或者有没有办法以某种方式有条件地注入$ modalInstance,或通过触发其他事件(例如按键)来关闭对话框?
答案 0 :(得分:0)
你可以试试这样的东西,但它有点味道。 plunker
app.js
var app = angular.module('plunker', []);
function Ctrl() {
return function(){
arguments[0].name = 'World';
console.log( arguments )
}
}
var m1 = new Ctrl();
m1.$inject = ['$scope'];
var m2 = new Ctrl();
m2.$inject = ['$scope', '$injector'];
app.controller('MainCtrl', m2);
app.controller('Main2Ctrl', m1);
的index.html
<p ng-controller="MainCtrl">Hello {{name}}!</p>
<p ng-controller="Main2Ctrl">Hello2 {{name}}!</p>
您会看到他们按预期注入依赖项,但argument[I]
感觉不对。我不建议做一些如图所示的事情。只需使用原型来定义两个控制器来定义常见行为。