スコープを分離するディレクティブがあります。親属性を渡すことができます (以下の「ts」)。しかし、属性を使用せずに親スコープのデータを分離スコープに渡す方法はありますか?
つまり、ディレクティブの定義で親スコープの値(ts)にアクセスするようにしたいのですが、htmlに書いた属性で送信する必要はありません。( $parent の使用は嫌われていると読みました。)
理由: 属性の使用は機能しますが、おかしなことのように見えます。コンポーネントを作成しようとしていますが、コンポーネントを機能させるために、ユーザーが属性 (この場合は "ts='ts'") を追加する必要はありません。
フィドル: http://jsfiddle.net/rrosen326/WWYuD/
<div ng-app="testapp">
<div ng-controller="Ctrl">
<h1>Test of Directive</h1>
<button ng-click="setData_ts()">Get Data</button>
<chart-dir num='1' ts='ts'></chart-dir>
<chart-dir num='2' ts='ts'></chart-dir>
</div>
</div>
var app = angular.module('testapp', [])
.controller('Ctrl', Ctrl);
function Ctrl($scope) {
$scope.ts = -1; // timestamp
$scope.setData_ts = function () {
$scope.ts = new Date().getTime();
};
}
app.directive('chartDir', function () {
return {
restrict: 'EA',
scope: {
ts: '=',
num: '@'
},
replace: true,
template: '<div><h3>Chart {{num}}</h3><p>Time Stamp: {{ts}}</p></div>',
link: function (scope, element, attrs) {
scope.$watch('ts', function (newValue, oldValue) {
// Data received - update charts
console.log("DATA RECEIVED", newValue);
});
}
};
});