我正在尝试从子指令访问父指令的范围。 请参阅jsbin
http://jsbin.com/tipekajegage/3/edit
当我点击按钮时,我想得到prod的价值。
var cpApp = angular.module('cpApp',[]);
cpApp.directive('cpProduct', function(){
var link = function (scope, element, attr) {
console.log('scope.prod '+ scope.prod);
};
return {
link: link,
restrict: 'EA',
scope: {
prod: '='
}
};
});
cpApp.directive('mediaButtons', [function(){
var template =
'<button ng-click="addToFavoriteList()">get prod from parent</div>' +
'</button>';
var controller = function($scope){
var vm = this;
$scope.addToFavoriteList = function(event){
console.log($scope.$parent.prod);
//GET PROD?
};
};
return {
template: template,
restrict: 'E',
controller: controller,
scope: true
};
}]);
答案 0 :(得分:1)
您需要将父函数作为require传递并将其分配给本地范围:
var linkFunction = function (scope, element, attrs, cpProductCtrl) {
scope.prod=cpProductCtrl.prod;
您还需要在父函数上定义一个控制器,如下所示:
controller: function($scope){
this.prod=$scope.prod;
}
然后你可以这样调用你的clickHandler方法:
console.log($scope.prod);
Here is the JS Bin如果我错过了任何描述。
答案 1 :(得分:1)
我稍微重构了你的代码,在你的cpProduct指令中创建了一个控制器,并在mediaButton中要求它访问它的范围。