在 ngDialog 中将变量发送到控制器('resolve')

send variables to controller('resolve') in ngDialog

使用 ngDialog 打开模式的简单方法是这样的:

ngDialog.open({
    template: 'template.html',
    controller: 'someCtrl'
})

如何向 'someCtrl' 发送变量?

ngDialog中有'resolve'这样的东西吗?

示例来自 angular-bootstrap 模态:

$modal.open({
    template: "<p>This is template</p>",
    controller: "someCtrl",
    resolve: {
        someVar: function(){
            return "Value of someVar"
        }
    }
})

这将打开模式,将 'someVar' 发送给负责的控制器。

更新:

新版本的 ngDialog 似乎增加了这个功能:

ngDialog.open({
    controller: function Ctrl(dep) {/*...*/},
    resolve: {
        dep: function depFactory() {
            return 'dep value';
        }
    }
});

看起来 ngDialog 不支持控制器中的解析和自定义注入。但是,您始终可以通过自己创建 controller 实例来手动完成此操作:

ngDialog.open({
    scope: $scope,
    template: 'template.html',
    controller: $controller('someCtrl', {
        $scope: $scope,
        name: 'Thomas'
    })
});

然后在控制器中你将能够访问注入的 service/variable:

app.controller('someCtrl', function($scope, name) {
    console.log(name); // Thomas
});

然而,这种方法有一个警告,因为当控制器由 ngDialog 本身实例化时,它还会在其中注入 $element 服务,这是打开的 angular.element 实例dialog HTML(但我怀疑它在控制器中是否必要)。但无论如何你应该知道它。

演示:http://plnkr.co/edit/3YpQ2bemk8fntKAPWY9i?p=preview