Javascript 如何使用controllerAs(与$scope相反)-实际上是一个Swig/Angular冲突
我试图学习使用controllerAs的流行方法,而不是将所有内容绑定到$scope。此处简要记录: 为了理解如何以这种方式正确地编码,我将提供一个非常简化的代码示例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')
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