AngularJS控制器as和this而不是$ scope在指令中调用$ apply

我一直在使用控制器作为语法,而不是$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()

在这里看到小提琴:

http://jsfiddle.net/z6476omb/1/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在AngularJS控制器和指令中使用“ this”而不是“ scope”

AngularJS:从我的指令中调用控制器函数

在指令/控制器中绑定$ scope

从控制器调用angularjs指令函数

AngularJS指令调用控制器功能

从控制器angularjs调用指令函数

在控制器中的指令外部调用scope。$ parent.function

AngularJS:将所需的指令控制器注入控制器,而不是链接函数

AngularJS中的控制器/指令继承

AngularJS:解析不是在RouteProvider中,而是在控制器中?

AngularJS控制器不是IBM MobileFirst中的功能

AngularJs-控制器和指令之间的通信

如何嵌套 angularjs 控制器和指令?

MVC Spring AngularJS指令和控制器

AngularJS控制器中的'this'与$ scope

AngularJS:通过属性从TD中的指令获取文本并通过控制器$ scope中的引发事件?

AngularJS控制器-指令->从指令调用控制器功能

AngularJS 控制器 $scope 在 ng-if 指令中不起作用

AngularJS:指令将对象添加到 $scope 但在控制器中未定义

从AngularJS中没有隔离范围的指令中调用控制器函数

AngularJS指令从Parent的控制器调用函数

angularjs指令不会调用控制器函数

AngularJs-从指令调用控制器函数

从AngularJS的父控制器调用指令的方法

从指令调用的控制器函数内部的空数组-AngularJS

AngularJS 从父到子指令控制器函数调用

AngularJS $ scope。$ apply()困境

AngularJS $ scope。$ apply与$ q

AngularJS中的控制器和过滤器模块