angularjs – Typescript 1.4中的AppGyver和Angular Controllers
发布时间:2020-12-17 18:04:10 所属栏目:安全 来源:网络整理
导读:我在AppGyver中遇到了角度控制器的问题,因为从不调用构造函数.我正在使用angular中的“controller as”语法,我不知道AppGyver是否支持它,因为我所看到的所有文档都是“$scope sintax”.这是我的控制器: interface ILoginControllerScope extends ng.IScope
我在AppGyver中遇到了角度控制器的问题,因为从不调用构造函数.我正在使用angular中的“controller as”语法,我不知道AppGyver是否支持它,因为我所看到的所有文档都是“$scope sintax”.这是我的控制器:
interface ILoginControllerScope extends ng.IScope { vm: LoginController; } interface ILoginController { Login(): any; } class LoginController implements ILoginController { static $inject: any = ['$scope','supersonic','steroids']; constructor(private $scope: ILoginControllerScope,private supersonic: any,private steroids: any) { this.supersonic.logger.log('This should be called'); $scope.vm = this; } Login(): any { } static controllerId(): string { return 'loginController'; } } appUsers.controller(LoginController.controllerId(),LoginController); 这是我的观点: <div ng-controller="loginController as vm" class="padding"> <div> </div> <div ng-hide="addonsUndefined"> <h1 class="center">Caredfor</h1> <div class="center"> <img class="logoSize" src="/images/logo.png"> </div> <div> <button class="button button-block button-positive icon-left super-social-facebook" ng-click="vm.Login()">Sign in with Facebook</button> </div> </div> </div> 编辑1 var LoginController = (function () { function LoginController($scope,supersonic) { this.supersonic = supersonic; supersonic.logger.log('This should be called'); $scope.vm = this; LoginController.controllerId = function () { return 'loginController'; }; LoginController.prototype.Login = function () { }; return LoginController; })(); appUsers.controller(LoginController.controllerId(),LoginController); 解决方法
它看起来非常好.以下是一些尝试:
>在浏览器中按F12,然后转到控制台选项卡,查看Angular是否有任何错误. static $inject: any = ['$scope','steroids']; constructor(private $scope: ILoginControllerScope,private steroids: any) { this.supersonic.logger.log('This should be called'); $scope.vm = this; } 试试这个: constructor() { var i:number = 7; } 在浏览器中,在该行上放置一个断点,看看它是否被击中.如果是,那么一次一个,将构造函数参数重新放入,并查看导致它破坏的原因.我怀疑你的ILoginControllerScope参数导致了问题,因为依赖注入不知道如何实例化其中一个.在我看来,你并不真的需要它,你可以选择使用vanilla ng.IScope. ILoginControllerScope没有添加任何值.为什么需要一个单独的类来存储对控制器的引用? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |