2013-02-02 112 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是相同的。如果您將屬性添加到鏈接功能中的範圍,則控制器將能夠看到它,反之亦然。

相關問題