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

时间:2013-02-02 07:03:25

标签: angularjs

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

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

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

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