通常在AngularJS的所有示例/源代码中,范围的修改都在控制器中完成.在我的指令中,我需要从另一个指令(或它的范围)获取一些信息并将其放入范围(在指令模板中可见).由于此信息对于此指令的所有实例都很常见,因此使用范围绑定对我来说听起来不太好.
所以我找到的唯一解决方案是在链接函数中修改实例范围:
link: function(scope, element, attr, parentCtrl) {
scope.data = parentCtrl.someData;
}
此解决方案有效. Plnkr example
问题:根据AngularJS哲学/风格来修改链接功能的范围还是有其他解决方案?
最佳答案 由于您在指令中创建了隔离范围(在示例中为plnkr),并且您希望允许父项在范围层次结构中“某处”(根据您对@MathewBerg的注释),我相信您唯一的选择是使用用于修改范围的链接功能.
(我想你可以在你的MainCtrl上定义只有子指令应该调用的方法,但强制执行它会很麻烦并打破封装).
那么,为了回应@MathewBerg已经说过的,是的,修改指令/链接功能中的范围.