我一直在使用控制器作为语法,而不是$scope
在我的Angular项目中使用它,并且使用指令遇到了一个问题。我正在尝试scope.$apply()
在指令中使用控制器中的函数。但是由于我没有在控制器中使用作用域,所以出现了以下错误:Uncaught TypeError:undefined不是一个函数。
我理解为什么会因为范围问题而引起问题,但是我的问题是$apply
在使用controller as和this而不是Controller的指令中使用的正确方法是什么$scope
?
JSFiddle示例:http://jsfiddle.net/z6476omb/
angular
.module('testApp',[])
.controller('TestCtrl',TestCtrl)
.directive('updateDirective',updateDirective)
function TestCtrl() {
var vm = this;
vm.name = 'Rob'
vm.updateName = updateName;
function updateName(new_name) {
vm.name = 'Robert';
}
}
function updateDirective() {
var directive = {
link: link,
restrict:'A'
}
return directive;
function link(scope,element,attr) {
element.on('click',function() {
console.log('trying to change...');
scope.$apply(scope.updateName());
});
}
}
一种实现方法是使用您使用的别名来引用控制器作用域ctrl
。
因此,在您的指令中,您可以将其称为: scope.ctrl.updateName()
在这里看到小提琴:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句