У меня проблемы с моими угловыми контроллерами в AppGyver, так как конструктор никогда не вызывается. Я использую синтаксис «контроллер как» от углового, и я не знаю, поддерживает ли AppGyver его, поскольку все его документы связаны с «$ sintax», насколько я вижу. Это мой контроллер:AppGyver и угловые контроллеры в TypScript 1.4
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>
Edit 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);
Мне нужен ILoginControllerScope, потому что мне нужно расширить интерфейс IScope, чтобы добавить новое свойство vm (с тех пор, как набирается TypScript), этот стиль кода отлично работал для меня в обычных браузерах. Я открыл консоль браузера, чтобы узнать, есть ли у меня какие-либо ошибки в AppGyver Connect, и я вижу, что он связан с бесконечным $ digest Loop. Спасибо за вашу помощь. –
Хорошо, сделайте то, что вы считаете правильным. Но я все еще не думаю, что вам нужен ILoginControllerScope. В вашем HTML, когда вы указываете «loginController as vm», это уже дает вам переменную «vm», которую вы можете использовать для доступа к свойствам вашего контроллера. Вам не нужно отдельно хранить ссылку на ваш контроллер внутри вашего IScope. –
Ну, это всего лишь синтаксический сахар, в итоге у сгенерированного JS его нет, а JS - то, что использует AppGyver. Я копирую сгенерированную JS на своем Edit 1 –