Angularjs 在指令之间传递控制器函数
我有一组两个指令,它们递归地互相调用以呈现树结构 我需要向这些指令传递一个控制器函数引用,因此它们需要依次传递彼此的引用。除了参数之外,它似乎还起作用 将引用传递到指令:Angularjs 在指令之间传递控制器函数,angularjs,Angularjs,我有一组两个指令,它们递归地互相调用以呈现树结构 我需要向这些指令传递一个控制器函数引用,因此它们需要依次传递彼此的引用。除了参数之外,它似乎还起作用 将引用传递到指令: <item-list items="data" functionreference="controllerfunction(name)"></item-list> 声明和传递函数引用的正确方法是什么?在您的项目列表中模板: template: '<ul><item ng-repea
<item-list items="data" functionreference="controllerfunction(name)"></item-list>
声明和传递函数引用的正确方法是什么?在您的
项目列表中
模板:
template: '<ul><item ng-repeat="item in items" item="item" functionreference="functionreference(name)'
它应该很好用
更新:对于
项
指令中附加的
,同样适用:
<item-list items="item.children" functionreference="functionreference({name:name})"></item-list>
// Instead of: functionreference(name)
//而不是:functionreference(名称)
另请参见此您必须确保使用。确保在如下所示的两个位置完成编辑 使用
functionreference=“functionreference({name:name})”
只要您想在指令中使用控制器函数
myApp.directive('itemList', function ($compile) {
return {
restrict: 'E',
template: '<ul><item ng-repeat="item in items" item="item" ' +
'functionreference="functionreference({name:name})"> ' +
'</item></ul>',
scope: {
items: '=',
functionreference: '&'
}
};
});
myApp.directive('itemList',函数($compile){
返回{
限制:'E',
模板:“”+
“
”,
范围:{
项目:“=”,
functionreference:“&”
}
};
});
及
$element.append('{{item.name}}}['+
“/”+//确实有效
']'+//不起作用
“ ”);
在视图中使用时,controllerfunction(name)
中的名称是什么?我从这个问题中得到了答案:。您应该传递函数和参数的名称。然后,在调用函数时,必须使用这些名称:$scope.functionreference({paramname:value})。它在这个问题的例子中起作用。。。但不是在我的:-(当调用控制器函数时,更新的演示不适用于儿童。此更新必须在两个地方进行。我应该编辑您的答案。:@user280767确实(但您明白了):)我更新了答案和演示(以防有人遇到相同的问题)。
tempate: '<ul><item ng-repeat="item in items" item="item" functionreference="functionreference({name: name})'
<item-list items="item.children" functionreference="functionreference({name:name})"></item-list>
// Instead of: functionreference(name)
myApp.directive('itemList', function ($compile) {
return {
restrict: 'E',
template: '<ul><item ng-repeat="item in items" item="item" ' +
'functionreference="functionreference({name:name})"> ' +
'</item></ul>',
scope: {
items: '=',
functionreference: '&'
}
};
});
$element.append('<li>{{item.name}} [ ' +
'<a href="#" ng-click="directivefunction(item.name)">directivefunction</a> / ' + // DOES work
'<a href="#" ng-click="functionreference({name:item.name})">functionreference</a>]' + // Does NOT work
'<item-list items="item.children" functionreference="functionreference({name:name})"></item-list></li>');