我一直遇到一个问题,它导致与控制器范围变量的定义不一致。
正如您可能知道的那样,使用controllerAs语法,您必须将所有变量与此实例附加到控制器函数中,如下所示:
angular.module('angularJsInternationalizationApp')
.controller('MainCtrl', function (SampleService) {
this.awesomeThings = [
'HTML5 Boilerplate',
'AngularJS',
'Karma'
];
this.translatedFromService = '';
SampleService.getTranslation().then(function(data){
this.translatedFromService = data;
});
});
现在的问题是this.translatefDromService不能从任何服务的成功或错误函数或事实上任何其他函数更新,因为它将 this 作为新函数的实例而不是控制器。
在这种情况下可以做什么。
我使用了一种解决方案,您将其标记为 vm。 var vm = this在控制器的开头,但除此之外还有什么解决方案吗?
干杯!