首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AppGyver和角度控制器在类型记录1.4中

AppGyver和角度控制器在类型记录1.4中
EN

Stack Overflow用户
提问于 2015-04-30 04:02:05
回答 1查看 270关注 0票数 5

我对AppGyver中的角控制器有问题,因为构造函数从未被调用过。我从角度上使用“控制器作为”语法,我不知道AppGyver是否支持它,因为据我所见,他的所有文档都带有"$scope sintax“。这是我的控制器:

代码语言:javascript
复制
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);

这就是我的观点:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

发布于 2015-04-30 04:21:06

看上去很不错。以下是一些值得尝试的事情:

  1. 在浏览器中按F12,然后转到Console选项卡,看看是否有角错误。
  2. 而不是这样: 静态$inject: any = '$scope',‘超音速’,‘类固醇’;构造器(私有$scope: ILoginControllerScope,私有超音速: any,私有类固醇: any) {this.supersonic.logger.log(‘应该调用’);$scope.vm =};

试试这个:

代码语言:javascript
复制
    constructor() {
        var i:number = 7;
    }

在浏览器中,在这条线上放置一个断点,看看是否被击中。如果是这样的话,那么一次一个地把构造函数参数放回去,看看是什么导致它中断的。我怀疑您的ILoginControllerScope参数导致了问题,因为依赖注入不知道如何实例化其中的一个。在我看来,你并不是真的需要这个,你可以选择香草的ng.IScope。ILoginControllerScope并没有增加任何价值。为什么需要一个单独的类来存储对控制器的引用?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29958778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档