我对使用AngularJS相当新,我想要做的是创建一个指令并从其中的父作用域调用函数。我能够做到这一点,但我似乎无法弄清楚如何将数据从隔离范围通过表达式传递到父范围。 Angular Developer指南中对此的解释有点令人困惑。
指令:
app.directive('myDir', function() {
return {
restrict: 'E',
template: '<div ng-click="parentFunc(someValue)"><div>',
scope: {
parentProp: '=property',
parentFunc: '&func'
},
link: function(scope, element, attrs) {
}
}
});
标记:
<my-dir prop="foo" func="bar(someValue)"></my-dir>
控制器:
app.controller('TstCtrl', function($scope) {
$scope.foo = 'test';
$scope.bar = function(value) {
console.log(value);
};
});
提前感谢您的帮助!
答案 0 :(得分:11)
可能还有其他方法可以执行此操作,但请参阅this fiddle,使用传递到func
属性中的相同参数名称将对象传入函数。
link: function(scope, element, attrs) {
scope.parentFunc({someValue:'testing'});
}
因此,在这种情况下,由于您在bar(someValue)
属性中调用了func
,因此您希望在链接函数中传入someValue
的对象。您正在调用parentFunc
,因为这是&func
在您的隔离范围内链接的内容。