Подтвердить что ты не робот

Отправлять переменные контроллеру ( "разрешение" ) в ngDialog

Простым способом открытия модального с ngDialog является следующее:

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

Как я могу отправить переменные этому "someCtrl"?

Есть ли такая вещь, как "разрешение" в ngDialog?

Пример из angular -bootstrap modal:

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

это приведет к открытию модальной отправки "someVar" ответственному контроллеру.

UPDATE:

Похоже, новая версия ngDialog добавила эту функцию:

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

Ответ 1

Хорошо выглядит как 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