Angularjs 如何访问控制器指令中定义的变量?

Angularjs 如何访问控制器指令中定义的变量?,angularjs,Angularjs,我必须访问指令中定义的变量,并使用angularjs在控制器中访问它 指令: app.directive('htmlData', function ($compile) { return { link: function($scope, element, attrs) { $(element).on('click', function() { $scope.html = $compile(eleme

我必须访问指令中定义的变量,并使用angularjs在控制器中访问它 指令:

app.directive('htmlData', function ($compile) {

    return {
        link: function($scope, element, attrs) {
                $(element).on('click', function() {
                    $scope.html = $compile(element)($scope).html();
                });

                return $scope.html;
        }

    };
});

并在控制器中使用$scope.html。

在$scope中设置变量时,您所要做的就是正常绑定到它。在您的情况下,osmehting类似于:

<div html-data>{{html}}</div>
{{html}
可能您没有看到更新,因为它缺少
$scope.$apply()

无论如何,让我说,我看到你的代码有两个问题。首先,您可以使用将单击事件附加到HTML

其次,为什么每次都要重新编译HTML?这几乎没有必要。您可能会遇到一个大问题,因为在第一次编译之后,您的模板将丢失,因此重新编译将使其变得无用


如果需要获取元素,可以注入
$element

,因为您没有在指令中创建隔离作用域(或新作用域),指令和与使用该指令的HTML关联的控制器都使用/共享同一作用域$链接函数中的作用域和注入控制器中的$scope是相同的。如果在链接函数中向作用域添加属性,控制器将能够看到它,反之亦然