我有一个隔离范围的指令。我可以将父属性传递给它(下面的“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);
});
}
};
});