我必须访问指令中定义的变量,并使用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。
答案 0 :(得分:1)
由于您没有在指令中创建隔离范围(或新范围),因此与使用该指令的HTML相关联的指令和控制器都使用/共享相同的范围。链接函数中的$ scope和注入控制器的$ scope是相同的。如果在链接函数中向作用域添加属性,控制器将能够看到它,反之亦然。
答案 1 :(得分:0)
当您在$ scope中设置变量时,您所要做的就是正常绑定它。在你的情况下,osmehting像:
<div html-data>{{html}}</div>
也许您没有看到更新,因为它缺少$scope.$apply()
。
无论如何,让我说我看到你的代码有两个问题。首先,您可以使用ng-click
directive将点击事件附加到HTML。
其次,为什么每次都要重新编译HTML?几乎没有必要这样做。您可能遇到了一个大问题,因为在第一次编译之后,您的模板将会丢失,因此重新编译将使其无用。
如果您需要获取元素,可以注入$element
。