我对AppGyver中的角控制器有问题,因为构造函数从未被调用过。我从角度上使用“控制器作为”语法,我不知道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生成的JS:
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);发布于 2015-04-30 04:21:06
看上去很不错。以下是一些值得尝试的事情:
试试这个:
constructor() {
var i:number = 7;
}在浏览器中,在这条线上放置一个断点,看看是否被击中。如果是这样的话,那么一次一个地把构造函数参数放回去,看看是什么导致它中断的。我怀疑您的ILoginControllerScope参数导致了问题,因为依赖注入不知道如何实例化其中的一个。在我看来,你并不是真的需要这个,你可以选择香草的ng.IScope。ILoginControllerScope并没有增加任何价值。为什么需要一个单独的类来存储对控制器的引用?
https://stackoverflow.com/questions/29958778
复制相似问题