【发布时间】:2016-07-15 03:24:05
【问题描述】:
我正在使用 ES6 类来定义我的控制器,所以这是语法,
export class SearchBarController {
constructor($log) {
'ngInject';
$log.debug("Hello");
}
textTyped($log){
$log.debug("change fired.");
}
}
查看:
<input type="text" data-ng-model="vm.txt" data-ng-change="vm.textTyped()"/>
因此,构造函数中的“Hello”可以正常记录。但是,typedText() 函数中的“更改触发”没有触发,因为显然未定义如何让我的类函数 textTyped() 访问 $log 服务?
注意:如果我将 $log 分配给构造函数中的类属性,例如,
this.logger = $log;
然后做,
this.logger.debug("Change fired.");
这行得通。但我不确定这是否是正确的方法。
更新:此外,这种方法将这个对 $log 服务的引用暴露给绑定到这个控制器的视图。这有害吗?
有没有更好的解决方案?
【问题讨论】:
-
this.logger = $log是recommended approach。 -
好的,谢谢。但是不会将它添加到 'this' 中直接暴露给 viewModel/$scope 吗?
标签: javascript angularjs dependency-injection ecmascript-6