Javascript 如何使用';控制器组件';使用$ionic模态的语法
我正在用AngularJS 1.5.3编写一个应用程序。我正在使用$ionicModal服务向我的用户显示模态 我想将代码移到“controller as”语法中,但我不确定如何使用$ionicModal服务实现这一点 这是我的控制器代码: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
(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.evm=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();
};
}