指令范围,使用controllerAs调用控制器函数并访问控制器变量

时间:2016-04-21 08:18:54

标签: angularjs scope controller directive angularjs-controlleras

我有一个加载模板并编译它的指令:

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语法,当从控制器视图调用普通函数时,我可以访问范围内的vm变量。从模板调用的函数无法访问正文中的vm变量。

模板是在myController视图下生成的。

我也尝试过使用不同的指令配置选项,如删除隔离范围,删除bindToController等。

有可能吗?怎么样?

(我知道我可以将其添加为额外的参数,但希望避免这种情况)

由于

0 个答案:

没有答案