2013-02-02 211 views
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。

回答

0

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

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

也许你没有看到更新,因为它缺乏一个$scope.$apply()

无论如何,让我说,我看到你的代码有两个问题。首先,您可以使用ng-click directive将点击事件附加到您的HTML。其次,你为什么每次都要重新编译你的HTML?几乎没有必要这样做。你可能会遇到一个大问题,因为在第一次编译之后,你的模板将会丢失,所以重新编译会导致它无用。

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

1

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

相关问题