Angularjs 如何访问控制器指令中定义的变量?
我必须访问指令中定义的变量,并使用angularjs在控制器中访问它 指令:Angularjs 如何访问控制器指令中定义的变量?,angularjs,Angularjs,我必须访问指令中定义的变量,并使用angularjs在控制器中访问它 指令: app.directive('htmlData', function ($compile) { return { link: function($scope, element, attrs) { $(element).on('click', function() { $scope.html = $compile(eleme
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是相同的。如果在链接函数中向作用域添加属性,控制器将能够看到它,反之亦然