9

使用 ngDialog 打开模态的简单方法是:

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

如何将变量发送到“someCtrl”?

ngDialog中是否有“解决”之类的东西?

角度引导模式的示例:

$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';
        }
    }
});
4

1 回答 1

13

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

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

然后在控制器中,您将能够访问注入的服务/变量:

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

然而,这种方法有一个警告,因为当控制器自己实例化时,ngDialog它也会在其中注入$element服务,这是angular.element打开的对话框 HTML 的一个实例(但我怀疑它在控制器中甚至是必要的)。但无论如何你都应该知道。

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

于 2015-01-13T11:21:38.847 回答