2

我必须访问指令中定义的变量并使用 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。

4

2 回答 2

1

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

于 2013-02-02T18:39:10.510 回答
0

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

<div html-data>{{html}}</div>

也许您没有看到更新,因为它缺少$scope.$apply().

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

其次,为什么每次都要重新编译 HTML?几乎没有必要这样做。你可能有一个很大的问题,因为在第一次编译之后,你的模板会丢失,所以重新编译会使它变得无用。

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

于 2013-02-02T12:30:22.910 回答