使用ngDialog打开模态的简单方法是:
ngDialog.open({
template: 'template.html',
controller: 'someCtrl'
})
如何将变量发送到'someCtrl'?
在ngDialog中有'解析'这样的东西吗?
angular-bootstrap模式的示例:
$modal.open({
template: "<p>This is template</p>",
controller: "someCtrl",
resolve: {
someVar: function(){
return "Value of someVar"
}
}
})
这将打开模态将'someVar'发送给负责的Controller。
更新
似乎新版本的ngDialog添加了此功能:
ngDialog.open({
controller: function Ctrl(dep) {/*...*/},
resolve: {
dep: function depFactory() {
return 'dep value';
}
}
});
答案 0 :(得分: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
服务,这是打开的对话框HTML的angular.element
实例(但我怀疑它在控制器中甚至是必要的)。但无论如何你应该知道。