Javascript 如何使用';控制器组件';使用$ionic模态的语法

Javascript 如何使用';控制器组件';使用$ionic模态的语法,javascript,angularjs,ionic-framework,modal-dialog,Javascript,Angularjs,Ionic Framework,Modal Dialog,我正在用AngularJS 1.5.3编写一个应用程序。我正在使用$ionicModal服务向我的用户显示模态 我想将代码移到“controller as”语法中,但我不确定如何使用$ionicModal服务实现这一点 这是我的控制器代码: (function () { "use strict"; angular .module('myApp') .controller('myController', myController); my

我正在用AngularJS 1.5.3编写一个应用程序。我正在使用$ionicModal服务向我的用户显示模态

我想将代码移到“controller as”语法中,但我不确定如何使用$ionicModal服务实现这一点

这是我的控制器代码:

(function () {
    "use strict";

    angular
        .module('myApp')
        .controller('myController', myController);

    myController.$inject = [
        '$scope',
        '$ionicModal',
        'myService'
    ];

    function myController($scope, $ionicModal, myService) {

        $scope.data = myService.data;

        $scope.openModal = openModal;

        $ionicModal.fromTemplateUrl('./myPath/modal.html', function ($ionicModal) {
            $scope.modal = $ionicModal;
        }, {
            scope: $scope,
            animation: 'slide-in-up'
        });

        $scope.$on('$destroy', function () {
            $scope.modal.remove();
        });

        function openModal() {
            $scope.modal.show();
        };

    }

})();
我想将代码移到“controller as”语法中,但我不确定如何使用$ionicModal服务实现这一点

简短回答 没有

详细答案 Ionic通过调用以下命令创建模式作用域:

var scope = options.scope && options.scope.$new() || $rootScope.$new(true);
当您对根控制器使用
ControllerAs
时,假设您有作用域的
vm
实例(a.e
vm=this;

vm
不是
范围

vm
是唯一的对象,没有范围继承,它没有
$new()
方法

因此,我们不能编写
{scope:vm}
,而只能编写
{scope:$scope}


当然,您可以使用Ionic代码,但它会导致意外行为

Ionic模式选项

作用域要作为的子级的作用域。默认值:创建$rootScope的子级

在这方面,它类似于。因此,它应该使用
$scope
任何方法来设置适当的范围层次结构。必要时将
$scope
与controllerAs语法一起使用没有什么错

考虑到控制器具有
$ctrl
controllerAs标识符,它应该类似于:

function myController($scope, $ionicModal, myService) {
    var self = this; // === $scope.$ctrl
    self.data = myService.data;
    self.openModal = openModal;

    $ionicModal.fromTemplateUrl('./myPath/modal.html', function (modal) {
        self.modal = modal;
    }, {
        scope: $scope,
        animation: 'slide-in-up'
    });

    self.$onDestroy = function () {
        self.modal.remove();
    });

    function openModal() {
        self.modal.show();
    };
}