分離されたスコープを持つディレクティブを書きたいのですが、そのスコープを親スコープのコントローラーで使用できるようにしたいです。私はこの解決策を見つけました:
<div ng-controller="Main">
<popupbutton directive-scope="popup"></popupbutton>
</div>
app.directive('popupbutton', [function() {
return {
restrict: "E",
scope: {
directiveScope: "="
},
link: function(sc, el, attrs) {
sc.directiveScope = sc;
sc.testvalue = 'foo';
}
};
}]);
app.controller('Main', function($scope) {
alert($scope.popup.testvalue); // Where did the property 'popup' come from?!?
});
プランカーを参照してください。
HTML で属性を記述する必要があり、コントローラーのコードでは、スコープ プロパティがどこから来たのかがわからないため、これは少し見苦しいと思います。これを行うより良い方法はありますか?
編集:
その上、コントローラ「メイン」が実行されているときは $scope.popup さえ利用できないようです。ディレクティブのリンク機能がまだ実行されていませんか?