我找到了类似的例子:https://github.com/angular-fullstack/generator-angular-fullstack/issues/1551但在我的情况下,某些东西不起作用。 我的服务很简单:
/*jshint esnext: true */
class ModalSrv {
constructor($scope) {
}
open(data) {
$scope.data = data;
$scope.modalClass = 'open';
}
}
ModalSrv.$inject = ['$scope'];
export default ModalSrv;
还有非常简单的控制器:
/*jshint esnext: true */
import ModalSrv from './ModalSrv'
class ShowVersionCtrl {
contructor($rootScope, $scope, $http, ModalSrv) {
$scope.showVersion = () => {
$http.get('/my_data.json').then(
result => {ModalSrv.open(result.data);}
);
}
}
}
ShowVersionCtrl.$inject = ['$rootScope','$scope', '$http', 'ModalSrv'];
export default ShowVersionCtrl;
但我得到Unknown provider: ModalSrvProvider <- ModalSrv
如何使用此控制器使这种服务工作?
答案 0 :(得分:0)
如果您使用的是AngularJS,则应使用某个名称注册创建的服务。您创建了类,您需要将此类注册为角度模块。
import ModalSrv from './ModalSrv'
angular.module(app, []).service('modalService', ModalSrv);
所以你说有角度,这个类应该被提到modalService
作为依赖。而angular将创建ModalSrv
类的单个实例。
最后你的代码将如下所示:
/*jshint esnext: true */
class ShowVersionCtrl {
contructor($rootScope, $scope, $http, modalService) {
$scope.showVersion = () => {
$http.get('/my_data.json').then(
result => {ModalSrv.open(result.data);}
);
}
}
}
ShowVersionCtrl.$inject = ['$rootScope','$scope', '$http', 'modalService'];
export default ShowVersionCtrl;