ディレクティブをアトリビュートディレクティブを付加するだけで拡張しようとしていますが、アトリビュートが定義されているエレメントのスコープを取得できません。例えばアトリビュートディレクティブから要素スコープを取得
、私はこのテンプレートを持っている:
ここ<div class="flex-item-grow flex-item flex-column report-area">
<sv-report sv-reloadable id="reportId"></sv-report>
</div>
、sv-reloadable
はsv-report
のいくつかの暗黙の理解を持っていますが、全く分からについてsv-reloadable
をsv-report
ありません。
私のようにsv-reloadable
を定義しました:今
angular
.module('sv-reloadable', [
'sv.services',
])
.directive('svReloadable', function(reportServices, $timeout) {
return {
restrict: 'A',
controller: function($scope, $timeout) {
$scope.$on('parameter-changed', function(evt, payload) {
evt.stopPropagation();
$scope.viewModel = getNewViewModel(payload);/* hit the server to retrieve new data */
});
}
};
});
、sv-reloadable
で$scope
はsv-report
の親範囲です。 sv-reloadable
は、リスナーをsv-report
のスコープにアタッチし、そのスコープのプロパティを入れ替えることができるようにしたいと考えています。私はそれが兄弟スコープをつかむことが可能であることを理解していますが、それはそれがどの要素に接続されているかを正確に把握しようとすると問題を引き起こします。
私は次のことを試みた:私はがは私の属性は上で定義された要素の範囲を与えるだろうと想定持っていたが、残念ながら、それはまだ要素の親範囲を返し
link: function(scope, element, attrs) {
ele = element;
var actualScopyThingy = element.scope();
},
。
それが重要な場合、sv-report
がsv-reloadable
ががviewModel
が定義しておく必要がありますすべてが、多くの異なる要素に装着されようとしているので、(次のように定義されていますが、私は同じそれを維持できるようにしたいのですが周り掘りのビットの後
return {
restrict: 'E',
replace: true,
templateUrl: 'sv-report/sv-report.tpl.html',
scope: {
id: '=',
reportParameters: '='
},
controller: function ($scope, svAnalytics) {
/* unrelated code here */
},
link: function(scope, element, attrs) {
initialLoadReport(scope);
}
};