0
我试图写一个指令,获取父控制器和父窗体控制器,并将它们传递作为单个对象,以我的控制器,这是我有:通OBJ从指令在AngularJS到控制器
HTML :
<div ng-controller="ParentController as self" ng-form="ParentForm">
<div ng-controller="ChildController1 as self" my-parent="self.parent">
ChildController1 parent:<br/>
{{self.parent}}
</div>
<br/>
<div ng-controller="ChildController2 as self" my-parent="self.parent">
ChildController2 parent:<br/>
{{self.parent}}
</div>
</div>
JS:
myApp.directive('myParent', function() {
var directive = {
restrict: 'A',
link: link
};
return directive;
function link(scope, element, attrs) {
var parentElement = element.parent();
var parentCtrl = parentElement.controller();
var formCtrl = parentElement.controller('form');
var parent = parentCtrl;
parent.form = formCtrl;
console.log("directive parent obj: ", parent);
// How can I pass the parent obj to controller???
}
});
我写这里plunker更好地说明情况:https://plnkr.co/edit/axnR6t2Q82IVtzftq7y7?p=preview
我知道在这种情况下,我可以在控制器中使用不同名称的controllerAs,但我需要使其与指令(“restrict:A”指令)一起工作。
有人可以帮我解决这个问题吗?
我试着使用相同的$范围,按照你的建议,我更新了我的plunker:https://plnkr.co /编辑/ axnR6t2Q82IVtzftq7y7?p =预览 现在的问题是,我无法在我的控制器中获得self.parent ... – wizzy
@wizzy var self = this; self是局部变量,不能从指令访问。 –
谢谢...所以,如果我明白了,我唯一的解决方案是使用服务... 问题是,如果我没有错,服务(和我存储在其中的数据)在我的应用程序中仍然存在生活......但我只在我的控制器中需要他们时,我打电话给我的路由器视图...我不会增加我的应用程序的足迹! – wizzy