Yapıcı hiçbir zaman çağrılmadığından, AppGyver'daki açısal denetleyicilerimle sorunlarım var. Ben "denetleyici olarak" sözdizimini köşeli olarak kullanıyorum ve AppGyver'ın destekliyor olup olmadığını bilmiyorum, çünkü tüm belgeleri "$ scope sintax" ile gördüğüm kadarıyla. Bu benim denetleyicisi geçerli:Typescript'te AppGyver ve Açısal Denetleyiciler 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);
Ve bu benim görünümdür:
<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>
düzenleme 1 JS oluşturulan:
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'a ihtiyacım var çünkü IScope arabirimini yeni özellik vm eklemek için genişletmem gerekiyor (çünkü, Typecript yazılmıştır), bu kod tarzı normal tarayıcılarda benim için mükemmel çalıştı. AppGyver Connect'te herhangi bir hata olup olmadığını görmek için tarayıcı konsolunu açtım ve Sonsuz $ digest Loop ile ilgili bir tane görüyorum. Yardımınız için teşekkürler. –
Tamam, doğru hissettiğiniz şeyi yapın. Ama hala ILoginControllerScope'a ihtiyacınız olduğunu düşünmüyorum. HTML'nizde, "loginController as vm" seçeneğini belirttiğinizde, zaten kontrol cihazınızın özelliklerine erişmek için kullanabileceğiniz bir "vm" değişkeni verir. IScope'nuzdaki kontrol cihazınıza bir referansı ayrı olarak kaydetmeniz gerekmez. –
Eh, sadece bir sözdizimsel şeker, sonunda oluşturulan JS yok ve JS AppGyver kullanıyor. Oluşturduğum JS'yi Düzenleme 1'e kopyaladım –