Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 指令作用域,使用controllerAs调用控制器函数并访问控制器变量_Angularjs_Scope_Controller_Directive_Angularjs Controlleras - Fatal编程技术网

Angularjs 指令作用域,使用controllerAs调用控制器函数并访问控制器变量

Angularjs 指令作用域,使用controllerAs调用控制器函数并访问控制器变量,angularjs,scope,controller,directive,angularjs-controlleras,Angularjs,Scope,Controller,Directive,Angularjs Controlleras,我有一个加载模板并对其进行编译的指令: function question($templateRequest, $compile) { return { restrict: 'E', scope: { apply: '&apply', item: '=item' }, bindToController: true,

我有一个加载模板并对其进行编译的指令:

function question($templateRequest, $compile) {
        return {
            restrict: 'E',
            scope: {
                apply: '&apply',
                item: '=item'
            },
            bindToController: true,
            link: function (scope, element, attrs) {
                //debugger;
                var templateUrl = 'someRandomUrl'
                $templateRequest(templateUrl).then(function (template) {
                    $compile(element.html(template).contents())(scope.$parent);
                }, function () {
                    // An error has occurred
                    $compile(element.html("error").contents())(scope);
                });
            }
        }
}   
模板已正确生成,我还可以将模板html中的函数调用到myController,如:

ng-click='vm.apply()'
在myController上,我使用controllerAs vm语法,当从controller视图调用普通函数时,我可以访问范围内的vm变量。从模板调用的函数无权访问主体内的vm变量

模板是在myController视图下生成的

我还尝试了使用不同的指令配置选项,比如删除隔离作用域、删除bindToController等等

可能吗?怎么做

(我知道我可以添加它作为额外的参数,但希望避免)


谢谢

您已将其告知bindToController,但尚未提供控制器。您可以只添加
controller:function(){this.apply=function(){alert('doing apply');}}
,它可能会按预期工作。