html代码
<p ng-controller="parentController">
<button-bar>
<button class="primary" ng-click="onPrimary1Click()">{{primary1Label}}</button>
<button class="primary">Primary2</button>
</button-bar>
</p>
js代码
var testapp = angular.module('testapp', []);
testapp.controller('parentController', ['$scope', '$window', function($scope, $window) {
console.log('parentController scope id = ', $scope.$id);
$scope.primary1Label = 'Prime1';
$scope.test=222;
$scope.onPrimary1Click = function() {
$window.alert('Primary1 clicked');
};
}]);
testapp.directive('primary', function() {
return {
restrict: 'C',
scope: false,
link: function(scope, element, attrs) {
alert(scope.test);
element.addClass('btn btn-primary');
}
}
});
testapp.directive('buttonBar', function() {
return {
restrict: 'EA',
template: '<p class="span4 well clearfix"><p class="pull-right" ng-transclude></p></p>',
replace: true,
transclude: true,
scope: false,
link: function(scope, element, attrs) {
scope.test=111;
//alert(scope.primary1Label);
}
};
});
scope: false下buttonBar和primary都能得到controller中的test=222,但是如何能在buttonBar中修改test,并使primary获取到修改后的值呢?
如果你非要这么做的话,应该用引用类型: