Javascript 如何使用controllerAs(与$scope相反)-实际上是一个Swig/Angular冲突

Javascript 如何使用controllerAs(与$scope相反)-实际上是一个Swig/Angular冲突,javascript,angularjs,Javascript,Angularjs,我试图学习使用controllerAs的流行方法,而不是将所有内容绑定到$scope。此处简要记录: 为了理解如何以这种方式正确地编码,我将提供一个非常简化的代码示例 angular .module('gc',['gc.login']); angular .module('gc.login',[]); (function () { 'use strict'; angular .module('gc.login')

我试图学习使用controllerAs的流行方法,而不是将所有内容绑定到$scope。此处简要记录:

为了理解如何以这种方式正确地编码,我将提供一个非常简化的代码示例

angular
        .module('gc',['gc.login']);

angular
        .module('gc.login',[]);


(function () {
    'use strict';

    angular
            .module('gc.login')
            .controller('gcLoginController', gcLoginController);

    gcLoginController.$inject = [];

    /* @ngInject */
    function gcLoginController() {
        var vm = this;
        vm.blah = "blah";

        activate();

        ////////////////

        function activate() {
            console.log("Hello World!");
        }

    }

})();
上面的代码是使用本文作者的snippits创建的,但是当我试图绑定到html中的变量“blah”时,它就不起作用了。它根本不输出任何东西

<body id="ng-app" ng-app="gc">

<div class="wrapper" ng-controller="gcLoginController as vm">
"{{vm.blah}}"
</div>

</body>

“{{vm.blah}}”
这只是输出“”


有人能看到使用这种方法的错误吗?

啊,这是一个愚蠢的错误。感谢那些在plunker再次检查我工作的人。我在这个项目中使用了node.js服务器和模板引擎“Swig”。显然,将Angular和Swig结合起来是一个错误,因为它们都使用{{}}来绑定变量,这就是为什么我的代码(正如charlietfl所指出的,它实际上在工作)似乎不起作用的原因。我将更新这篇文章的标题,以帮助其他可能有类似的难以追踪Angular/Swig问题的人


更新-可以解决这个问题:

这些引用只是为了告诉我代码块正在工作。如果它正常工作,那么它会显示“blah”,但现在它只显示“”,这意味着它找不到变量vm.blah.works。在这里,控制台日志工作正常吗?我这样问是因为activate在函数定义之前被调用。在这种情况下,可能会导致错误,导致控制器停止处理。您使用的是哪个版本的angular?正如@charlietfl所述,您的代码在使用Angular 1.4.x-Brant的复制中正常工作,console.log“Hello World!”起作用-我用的是1.4.7