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